ExecuteNonQuery: свойство подключения не было инициализировано. Sqlparameter array
Мне нужна помощь.. пожалуйста, скажите мне, что я сделал неправильно в этом коде, я запутался во время передачи массива параметров в команду. моя процедура хранения правильная, строка подключения также правильная..
internal string addmember(string name, string dob, string city, string state, string mobile, string email, string pass)
{
List<SqlParameter> param = new List<SqlParameter>();
param.Add(new SqlParameter("@Mname",Convert.ToString(name)));
param.Add(new SqlParameter("@Mdob",Convert.ToString(dob)));
param.Add(new SqlParameter("@MemailId",Convert.ToString(email)));
param.Add(new SqlParameter("@Mpassword", Convert.ToString(email)));
param.Add(new SqlParameter("@McontactNo", Convert.ToString(mobile)));
param.Add(new SqlParameter("@Mcity", Convert.ToString(city)));
param.Add(new SqlParameter("@Mstate", Convert.ToString(state)));
string result = Convert.ToString(executescaler(con, CommandType.StoredProcedure, "add_members", param.ToArray()));
return result;
}
private string executescaler(string con, CommandType commandTyp, string procedure, SqlParameter[] sqlParameter)
{
string res;
using (SqlConnection connection = new SqlConnection(con))
{
connection.Open();
SqlCommand cmd = new SqlCommand(procedure, connection);
cmd.CommandType = commandTyp;
cmd.CommandText = procedure;
cmd.Parameters.AddRange(sqlParameter);
res= cmd.ExecuteNonQuery().ToString();
}
return res;
}
обычно я использую sqlhelper, поэтому никогда не нужно проходить глубоко в ado.. но теперь я страдаю из-за этого.. я не понимаю, как передать массив sqlparameter в команду
1 ответ
Решение
Вы не сказали своему SqlCommand
что это должно работать с вашим SqlConnetion
, Также, SqlCommand
реализует IDisposable
интерфейс, так что вы должны использовать его внутри using
заявление:
private string executescaler(string con, CommandType commandTyp, string procedure, SqlParameter[] sqlParameter)
{
string res;
using (var connection = new SqlConnection(con))
{
using(var cmd = new SqlCommand(procedure, con))
{
cmd.CommandType = commandTyp;
cmd.Parameters.AddRange(sqlParameter);
connection.Open();
res = cmd.ExecuteNonQuery().ToString();
}
}
return res;
}