sql >> データベース >  >> RDS >> Sqlserver

日時ピッカーを使用して SQL データベースからデータを読み取る

    私たちは毎日ここでこれらの質問を目にします。それらは同じ問題から生じます。

    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
    


    1. MySQLが1つのテーブルから別のテーブルに更新され、条件が機能していませんか?

    2. ExecuteScalarはNullReferenceExceptionをスローします

    3. SquirreLSQLクライアント3.7.1上のPL/SQL

    4. PostgreSQLでテーブルコメントのリストを取得する