Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Selezionare dal database di SQL Server con un intervallo specifico utilizzando la casella di testo

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.