Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Sélectionnez dans la base de données SQL Server avec une plage spécifique à l'aide de la zone de texte

N'utilisez pas la concaténation de chaînes pour créer vos requêtes sql, JAMAIS !

Vous êtes ouvert à l'injection sql, il n'y a aucune excuse pour cela. Utilisez plutôt les paramètres 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)

Maintenant, quittez cette méthode avec un message significatif si l'utilisateur n'a pas fourni de dates valides. Vous pouvez vérifier validFromDate et validToDate qui sont des booléens. Le reste du code est exécuté 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

Je viens de voir que vous utilisez varchar pour stocker datetimes . Pourquoi? Corrigez-le dans la base de données.