私たちは毎日ここでこれらの質問を目にします。それらは同じ問題から生じます。
SQL クエリの作成に文字列連結を使用しないでください。
それは大きな問題です。もちろん、最初の効果はすでに達成しています。許容可能な方法で文字列を有効なデータ型に変換する方法は?埋め込まれた引用符、日付の正しい表現、基礎となるデータベース システムの 10 進数を使用して解析の問題を解決する必要があります。しかし、文字列連結の 2 つ目の、より微妙な副作用は SQL インジェクション です。 (SQL インジェクションは非常に大きなトピックであるため、これは参考リンクです)
この種の問題を解決する唯一の方法は PARAMETERS を使用することです。
これは、質問を効率的に解決するのはデータベース エンジンであることを意味します。パラメータ プレースホルダー (@something) を含む文字列とパラメーターの値の正確なデータ型を持つパラメーターのコレクション。
したがって、コードはこのように変更する必要があります
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