Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Selecione do banco de dados SQL Server com intervalo específico usando caixa de texto


Não use concatenação de strings para construir suas consultas sql, NUNCA!

Você está aberto para injeção de sql, não há desculpa para isso. Em vez disso, use 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)

Agora saia deste método com uma mensagem significativa se o usuário não fornecer datas válidas. Você pode verificar validFromDate e validToDate que são booleanos. O resto do código é executado 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

Acabei de ver você usar varchar para armazenar datetimes . Por quê? Corrija-o no banco de dados.