Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изберете от база данни на SQL Server с конкретен диапазон, като използвате текстово поле

Не използвайте конкатенация на низове, за да създавате вашите sql заявки, НИКОГА!

Вие сте отворени за sql инжекция, няма извинение за това. Вместо това използвайте 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)

Сега излезте от този метод със смислено съобщение, ако потребителят не е предоставил валидни дати. Можете да проверите validFromDate и validToDate които са булеви. Останалата част от кода се изпълнява 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

Току-що видях, че използвате varchar за съхраняване на datetimes . Защо? Поправете го в базата данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Достъп до базата данни на опашка, за да избегнете множество елементи в кеша

  2. Външен ключ към композитен ключ

  3. връща само последните избрани резултати от съхранена процедура

  4. Изтриване на 1 милион реда в SQL Server

  5. Как да осигуря низ със списък от стойности към оператор IN