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

Odczytaj dane z bazy danych sql za pomocą selektora daty i godziny

Te pytania widzimy tutaj każdego dnia. Wynikają z tego samego problemu.

NIGDY NIE UŻYWAJ ŁĄCZENIA ŁAŃCUCHÓW DO BUDOWANIA ZAPYTAŃ SQL.

To duży problem. Oczywiście spotkałeś się już z pierwszym efektem. Jak przekonwertować ciągi w akceptowalny sposób na efektywny typ danych? Musisz rozwiązać problemy parsowania z osadzonymi cudzysłowami, poprawną reprezentacją dat i liczb dziesiętnych dla bazowego systemu bazy danych. Ale drugim i bardziej subtelnym efektem ubocznym łączenia ciągów jest wstrzyknięcie SQL (To tylko pouczający link, ponieważ SQL Injection to bardzo obszerny temat)

Aby rozwiązać tego rodzaju problemy, jedynym akceptowanym sposobem jest użycie PARAMETRÓW.
Oznacza to, że to silnik bazy danych rozwiązuje pytanie w efektywny sposób, potrzebujesz ciągu znaków z symbolami zastępczymi parametrów (@coś) i zbiór parametrów z dokładnym typem danych dla wartości parametru.

Więc twój kod powinien się zmienić w ten sposób

Dim strSQL As String = "SELECT EMP_ID,EMP_NAME,AT_STATUS,AT_REMARK " + 
                       "FROM ATTENDANCE WHERE AT_DATE = @editdate " + 
                       "ORDER BY EMP_NAME ASC"
Using con = new SqlConnection("constring_here")
    con.Open()
    Using cmd = new SqlCommand(strSQL, con)
        cmd.Parameters.AddWithValue("@editdate", DTPEDITAT.Value)
        ' do whatever you want with the command '
        ' like ExecuteReader or use a DataAdapter to fill datasets'
    End Using
End Using


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wypełnij ArrayList z zestawu wyników procedury składowanej

  2. Jak dynamicznie zmieniać lokalizację kopii zapasowej na serwerze sql?

  3. „Określone dane wejściowe nie reprezentują prawidłowego wystąpienia geograficznego” podczas korzystania z SqlGeographyBuilder

  4. Dane hierarchiczne w Linq - opcje i wydajność

  5. Jak obliczyć wiek (w latach) na podstawie daty urodzenia i getDate()