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