Tyto otázky tu vidíme každý den. Vycházejí ze stejného problému.
NIKDY NEPOUŽÍVEJTE ŘETĚZCOVÉ ŘETĚZENÍ K SESTAVOVÁNÍ DOTAZŮ SQL.
Je to velký problém. Samozřejmě jste se již setkali s prvním efektem. Jak převést řetězce přijatelným způsobem na efektivní datový typ? Potřebujete vyřešit problémy s analýzou pomocí vložených uvozovek, správné reprezentace dat a desetinných čísel pro základní databázový systém. Ale druhým a jemnějším vedlejším efektem zřetězení řetězců je vkládání SQL (Toto je jen poučný odkaz, protože SQL Injection je velmi rozsáhlé téma)
K vyřešení tohoto druhu problémů je jediným přijatelným způsobem použití PARAMETERS.
To znamená, že je to databázový stroj, který efektivně řeší otázku, potřebujete řetězec se zástupnými symboly parametrů (@něco) a kolekce Parametrů s přesným datovým typem pro hodnotu parametru.
Váš kód by se tedy měl změnit tímto způsobem
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