sql >> Databasteknik >  >> RDS >> Sqlserver

Läs data från sql-databas med hjälp av datumväljaren

Vi ser dessa frågor här varje dag. De härrör från samma problem.

ANVÄND ALDRIG STRING CONCATENATION FÖR ATT BYGGA SQL-FRÅGOR.

Det är ett stort problem. Naturligtvis har du redan mött den första effekten. Hur konverterar man strängar på ett acceptabelt sätt till den effektiva datatypen? Du behöver lösa parsningsproblem med inbäddade citattecken, korrekt representation av datum och decimaltal för det underliggande databassystemet. Men den andra och mer subtila bieffekten av strängsammansättning är SQL-injektion (Detta är bara en lärorik länk eftersom SQL Injection är ett mycket stort ämne)

För att lösa den här typen av problem är det enda accepterade sättet att använda PARAMETERS.
Detta betyder att det är databasmotorn som på ett effektivt sätt löser frågan, du behöver en sträng med parameterplatshållare (@någonting) och en samling av parametrar med den exakta datatypen för parameterns värde.

Så din kod bör ändras på detta sätt

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. Varför är PHPs mysql_-funktioner utfasade?

  2. Det går inte att anropa JNDI-resursen i filen persistence.xml

  3. Hur man ställer in MariaDB 10.3-replikering med Ansible och Vagrant

  4. Hur man väljer posten innehåller MAX(något_fält) inom GROUP(gruppera efter)