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パラメータを渡すための正しい構文は何ですか?
ありがとうございました。
このようになります、
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = ("insert_questions") ;
cmd.Parameters.AddWithValue("@value", valueHere);
cmd.Parameters.AddWithValue("@value2", valueHere);
ご了承ください @value
および@value2
は、ストアドプロシージャで宣言されているパラメータです。
正しい方法は
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();
}
}
これを試して:
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);
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);
private void ProcessData(MerchantLead data)
{
var cmdCardJournal = new SqlCommand { CommandText = "BusinessLeadsInsert" };
var sql = new Sqlquery();
sql._cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
cmdCardJournal.Parameters.AddWithValue("@Name", data.FirstName);
cmdCardJournal.Parameters.AddWithValue("@LastName", data.LastName);
cmdCardJournal.Parameters.AddWithValue("@BusinessName", data.BusinessName);
cmdCardJournal.Parameters.AddWithValue("@PhoneNumber", data.PhoneNumber);
cmdCardJournal.Parameters.AddWithValue("@Email", data.Email);
cmdCardJournal.Parameters.AddWithValue("@Website", data.Website);
cmdCardJournal.Parameters.AddWithValue("@OTP", data.OTP);
cmdCardJournal.Parameters.AddWithValue("@OTPExpired", DateTime.UtcNow.AddMinutes(30));
sql.SpCommandExeNon(cmdCardJournal);
}