Non usare la concatenazione di stringhe per costruire le tue query sql, MAI!
Sei aperto per l'iniezione di sql, non ci sono scuse per questo. Invece usa i parametri sql:
Dim dateFrom as Date
Dim dateTo as Date
Dim validFromDate = Date.TryParse(Txtfromyear_reprt.Text.Trim(), dateFrom)
Dim validToDate = Date.TryParse(Txttoyear_reprt.Text.Trim(), dateTo)
Ora esci da questo metodo con un messaggio significativo se l'utente non ha fornito date valide. Puoi controllare validFromDate
e validToDate
che sono booleani. Il resto del codice viene eseguito If validFromDate AndAlso validToDate
:
Dim str As String = "select * from MYTABLE where Year >= @fromyear and Year <= @toyear"
da = New SqlDataAdapter(str, conn)
da.SelectCommand.Parameters.Add("@fromyear", SqlDbType.DateTime).Value = dateFrom
da.SelectCommand.Parameters.Add("@toyear", SqlDbType.DateTime).Value = dateTo
' now you can use da.Fill(ds, "MYTABLE") safely
Ti ho appena visto usare varchar
per memorizzare datetimes
. Come mai? Correggilo nel database.