10

SQLコマンドパラメータのような整数値を渡す方法は?

私はこのようにしようとしています:

cmd.CommandText = ("insert_questions '" + 
cmd.Parameters.AddWithValue(store_result,store_result) + "','" + 
cmd.Parameters.AddWithValue(store_title, store_title) + "', '" + 
cmd.Parameters.AddWithValue(store_des, store_des) + "'");

store_resultはintであり、他の2つのパラメーターは文字列型です。

store_resultは以下のようなエラーメッセージを出します。

引数1:「int」から「string」に変換できません

SPには、store_resultの値を取得する別のint型変数があります。

intパラメータを渡すための正しい構文は何ですか?

ありがとうございました。

4

5 に答える 5

18

正しい方法は

using(var connection = new SqlConnection(ConnectionString))
{
    connection.Open();
    using(var command = new SqlCommand("SELECT * FROM Table WHERE ID=@someID",connection))
    {
        command.Parameters.AddWithValue("someID",1234);
        var r = command.ExecuteQuery();
    }
}

これは、テキストクエリでも機能することを意味します。ストアドプロシージャを使用するとさらに簡単になります。SQLクエリの代わりに、ストアドプロシージャ名を指定するだけです。

using(var connection = new SqlConnection(ConnectionString))
{
    connection.Open();
    using(var command = new SqlCommand("insert_sproc",connection))
    {
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.AddWithValue("someID",1234);
        var r = command.ExecuteQuery();
    }
}
于 2012-09-07T06:45:13.870 に答える
7

このようになります、

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = ("insert_questions") ;
cmd.Parameters.AddWithValue("@value", valueHere);
cmd.Parameters.AddWithValue("@value2", valueHere);

@value@value2はストアドプロシージャで宣言されたパラメータであることに注意してください。

于 2012-09-07T06:38:51.477 に答える
6

これを試して:

        cmd.CommandText = ("insert_questions @store_result, @store_title, @store_des");
        cmd.Parameters.AddWithValue("@store_result", store_result);
        cmd.Parameters.AddWithValue("@store_title", store_title);
        cmd.Parameters.AddWithValue("@store_des", store_des);
于 2012-09-07T06:38:24.997 に答える
4

SqlParameterインスタンスを連結しません。代わりは:

cmd.CommandText = "insert_questions @store_result, @store_title, @store_des";
cmd.Parameters.AddWithValue("store_result", store_result);
cmd.Parameters.AddWithValue("store_title", store_title);
cmd.Parameters.AddWithValue("store_des", store_des);

で使用される名前AddWithValueは、TSQL@store_resultではなどとして使用されます。

inert_questionsそれが実際にprocであると仮定すると、さらに簡単になります。

cmd.CommandText = "insert_questions";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("store_result", store_result);
cmd.Parameters.AddWithValue("store_title", store_title);
cmd.Parameters.AddWithValue("store_des", store_des);

あるいは、それがすべて面倒に思える場合は、dapper-dot-netなどのツールを使用するとこれが簡単になります。

someOpenConnection.Execute("insert_questions",    
      new { store_result, store_title, store_des },
      commandType: CommandType.StoredProcedure);
于 2012-09-07T06:38:53.643 に答える