Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Lesen Sie Daten aus der SQL-Datenbank mit dem Datetime-Picker

Diese Fragen sehen wir hier jeden Tag. Sie stammen aus dem gleichen Problem.

VERWENDEN SIE NIEMALS STRING-VERKETTUNG, UM SQL-ABFRAGEN ZU ERSTELLEN.

Es ist ein großes Problem. Den ersten Effekt hast du natürlich schon kennengelernt. Wie konvertiere ich Strings auf akzeptable Weise in den effektiven Datentyp? Sie müssen Parsing-Probleme mit eingebetteten Anführungszeichen, korrekter Darstellung von Datumsangaben und Dezimalzahlen für das zugrunde liegende Datenbanksystem lösen. Aber der zweite und subtilere Nebeneffekt der Stringverkettung ist SQL Injection (Dies ist nur ein lehrreicher Link, da SQL-Injection ein sehr umfangreiches Thema ist)

Um diese Art von Problemen zu lösen, ist der einzig akzeptierte Weg die Verwendung von PARAMETERS.
Das bedeutet, dass es die Datenbank-Engine ist, die die Frage auf effiziente Weise löst, Sie benötigen eine Zeichenfolge mit Parameterplatzhaltern (das @something) und a Sammlung von Parametern mit dem genauen Datentyp für den Wert des Parameters.

Ihr Code sollte sich also auf diese Weise ändern

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