Verwenden Sie keine Zeichenfolgenverkettung, um Ihre SQL-Abfragen zu erstellen, NIEMALS!
Sie sind offen für SQL-Injection, es gibt keine Entschuldigung dafür. Verwenden Sie stattdessen SQL-Parameter:
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)
Beenden Sie diese Methode jetzt mit einer aussagekräftigen Meldung, wenn der Benutzer keine gültigen Daten angegeben hat. Sie können validFromDate
überprüfen und validToDate
das sind boolesche Werte. Der Rest des Codes wird ausgeführt 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
Ich habe gerade gesehen, dass Sie varchar
verwenden um datetimes
zu speichern . Wieso den? Korrigieren Sie es in der Datenbank.