1

次のようなwhere句を使用してSQLステートメントを実行しようとしています

 string s2 = "Select * from idtyfile where oysterid=" + id ;
 SqlCommand da2 = new SqlCommand(s2, con); or 
 SqlAdapter da2 = new SqlAdapter(s2, con);

実行しようとすると、これらの両方が失敗します

da2.ExecuteReader();

IDのデータは次のようになります

ID
43PCOU5T
ZP6RAEJ0

何らかの理由で、これらのクエリの両方がこれらの種類のデータで失敗しています。

4

1 に答える 1

8

select コマンドに一重引用符がありません。これが元のSELECT失敗の原因です。ただし、ステートメント内でSqlCommand/を常にパラメーター化してカプセル化する必要があることに注意してください。以下は、問題を解決するためのよりクリーンで安全な方法です。SqlConnectionusing

        string s2 = "Select * from idtyfile where oysterid=@id";
        DataTable myDataTable = new DataTable();

        using (SqlConnection conn = new SqlConnection(myConnectionString))
        using (SqlCommand cmd = new SqlCommand(s2, conn))
        {
            cmd.Parameters.AddWithValue("@id", id);
            conn.Open();
            myDataTable.Load(cmd.ExecuteReader());
        }

一部の教育リソースについては、次のリンクを参照してください。

usingキーワードの MSDN リファレンス

MSDN リファレンスSqlCommand --Parametersプロパティを見てください。

于 2013-06-18T18:50:50.237 に答える