sql >> Database >  >> RDS >> Sqlserver

Kies uit SQL Server-database met specifiek bereik met behulp van tekstvak

Gebruik geen aaneenschakeling van tekenreeksen om uw SQL-query's te bouwen, NOOIT!

Je staat open voor sql-injectie, daar is geen excuus voor. Gebruik in plaats daarvan sql-parameters:

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)

Sluit deze methode nu af met een zinvol bericht als de gebruiker geen geldige datums heeft opgegeven. U kunt validFromDate . controleren en validToDate die booleans zijn. De rest van de code wordt uitgevoerd 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

Ik zag net dat je varchar gebruikt om datetimes op te slaan . Waarom? Repareer het in de database.




  1. Een nieuwe pagina maken voor een ander php ORDER BY-statement?

  2. SQL Server-draaitabel met aggregaten van meerdere kolommen

  3. SQL-update, dezelfde query, elke keer andere resultaten

  4. AWS EMR PySpark verbinden met mysql