sql >> Database >  >> RDS >> Sqlserver

Gegevens lezen uit sql-database met datetime-kiezer

Deze vragen zien we hier elke dag. Ze komen voort uit hetzelfde probleem.

GEBRUIK NOOIT STRING CONCATENATION OM SQL-QUERIES TE MAKEN.

Het is een groot probleem. Het eerste effect heb je natuurlijk al ontmoet. Hoe tekenreeksen op een acceptabele manier converteren naar het effectieve gegevenstype? U moet parseerproblemen oplossen met ingesloten aanhalingstekens, correcte weergave van datums en decimale getallen voor het onderliggende databasesysteem. Maar de tweede en meer subtiele bijwerking van stringconcatenatie is SQL-injectie (Dit is slechts een leerzame link omdat SQL-injectie een zeer groot onderwerp is)

Om dit soort problemen op te lossen is de enige geaccepteerde manier om PARAMETERS te gebruiken.
Dit betekent dat het de database-engine is die de vraag op een efficiënte manier oplost, je hebt een string nodig met tijdelijke aanduidingen voor parameters (het @iets) en een verzameling parameters met het exacte gegevenstype voor de waarde van de parameter.

Dus je code zou op deze manier moeten veranderen

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. Claims elimineren met ClaimStatus =1 op basis van Activiteitsdatum. SQL Server 2012

  2. converteer het Postgres-geometrieformaat naar WKT

  3. Hoe MySQL-queryresultaten in een andere tabel opslaan?

  4. codeigniter-database verplaatst naar een andere tabel