Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wählen Sie mithilfe des Textfelds aus der SQL Server-Datenbank mit einem bestimmten Bereich aus

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.