2012-09-07 20 views
5

SQLコマンドパラメータのように整数値を渡すには?Sql commandTextでintパラメータを渡す方法

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

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:SPで

'文字列' 'にint型から変換することはできません、のstore_resultの値を取得します、別のint型の変数があります。

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

ありがとうございます。

+0

は、あなたのint型の値の周りに文字列の区切り文字を入れないでください(ただし、私は、これはあなたの問題の少なくともある疑いがあります)。 – phoog

答えて

5

それは@value@value2があなたのストアドプロシージャで宣言されたパラメータです

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

なお、このようにする必要があります。

5

はこれを試してみてください:

 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); 
3

SqlParameterインスタンスを連結しません。代わりに:などAddWithValueで使用される名前が@store_resultとしてTSQLで使用されている

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); 

我々は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); 
9

行くための正しい方法は、これはそれもテキストクエリで動作する意味

using(var connection = new SqlConnection(ConnectionString)) 
{ 
    connection.Open(); 
    using(var command = new SqlCommand("SELECT * FROM Table WHERE [email protected]",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(); 
    } 
} 
関連する問題