sql >> Database teknologi >  >> RDS >> Sqlserver

Læs data fra sql-database ved hjælp af datetime-vælger

Vi ser disse spørgsmål her hver dag. De stammer fra samme problem.

BRUG ALDRIG STRING CONCATENATION TIL AT BYGGE SQL-FORSØGNINGER.

Det er et stort problem. Selvfølgelig har du allerede mødt den første effekt. Hvordan konverterer man strenge på en acceptabel måde til den effektive datatype? Du skal løse parsingsproblemer med indlejrede anførselstegn, korrekt repræsentation af datoer og decimaltal for det underliggende databasesystem. Men den anden og mere subtile bivirkning af strengsammenkædning er SQL-injektion (Dette er kun et lærerigt link, fordi SQL Injection er et meget stort emne)

For at løse denne slags problemer er den eneste accepterede måde at bruge PARAMETERS.
Det betyder, at det er databasemotoren, der på en effektiv måde løser spørgsmålet, du skal bruge en streng med parameterpladsholdere (@noget) og en samling af parametre med den nøjagtige datatype for parameterens værdi.

Så din kode burde ændre sig på denne måde

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. Formater SQLite-resultater som JSON

  2. Få den faktiske (absolutte) eksekveringstid for den sidste forespørgsel i PHP (eksklusiv netværksforsinkelse osv.)

  3. Sådan udfyldes Excel-regneark med MySQL-data ved hjælp af PHP

  4. Udskriv den faktiske forespørgsel, MySQLdb kører?