Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wybierz z bazy danych SQL Server z określonym zakresem za pomocą pola tekstowego

Nie używaj konkatenacji ciągów do tworzenia zapytań sql, NIGDY!

Jesteś otwarty na wstrzyknięcie sql, nie ma na to usprawiedliwienia. Zamiast tego użyj parametrów 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)

Teraz wyjdź z tej metody z sensownym komunikatem, jeśli użytkownik nie podał prawidłowych dat. Możesz sprawdzić validFromDate i validToDate które są wartościami boolowskimi. Reszta kodu jest wykonywana 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

Właśnie widziałem, że używasz varchar do przechowywania datetimes . Czemu? Napraw to w bazie danych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizuj tylko czas z mojego pola Datetime w sql

  2. Widok, aby zidentyfikować zgrupowane wartości lub obiekt

  3. Jak usunąć wiersze w tabelach zawierające klucze obce do innych tabel

  4. Różnica między użytkownikiem a loginem w SQL Server

  5. Nowsza instancja SSRS ze starym aparatem baz danych?