sql >> Base de Datos >  >> RDS >> Sqlserver

Seleccione de la base de datos de SQL Server con un rango específico usando el cuadro de texto

No utilice la concatenación de cadenas para crear sus consultas sql, ¡NUNCA!

Está abierto a la inyección de sql, no hay excusa para ello. En su lugar, utilice parámetros 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)

Ahora salga de este método con un mensaje significativo si el usuario no proporcionó fechas válidas. Puede verificar validFromDate y validToDate que son booleanos. El resto del código se ejecuta 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

Acabo de ver que usas varchar para almacenar datetimes . ¿Por qué? Arreglarlo en la base de datos.