Не използвайте конкатенация на низове, за да създавате вашите sql заявки, НИКОГА!
Вие сте отворени за sql инжекция, няма извинение за това. Вместо това използвайте 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)
Сега излезте от този метод със смислено съобщение, ако потребителят не е предоставил валидни дати. Можете да проверите validFromDate
и validToDate
които са булеви. Останалата част от кода се изпълнява 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
Току-що видях, че използвате varchar
за съхраняване на datetimes
. Защо? Поправете го в базата данни.