Почему меня возвращает следующая ошибка?
ExecuteNonQuery: свойство Connection не инициализировалось.
Код:
public bool IngresarUsuario(Prueba objeto)
{
using (SqlConnection con = new SqlConnection(strConnection))
{
try
{
query= ("insert into Pruebas (Id,Nombre,Componente)values (@Id,@Nombre,@Componente)");
SqlCommand comando = new SqlCommand(query,con);
comando.CommandType = CommandType.Text;
con.Open();
comando.Connection = cadena;
comando.Parameters.AddWithValue("@Id", objeto.Id);
comando.Parameters.AddWithValue("@Nombre", objeto.Nombre);
comando.Parameters.AddWithValue("@Componente", objeto.Componente);
if (Convert.ToBoolean(comando.ExecuteNonQuery()))
{
return true;
}
else
{
return false;
}
}
finally { }
}
}
открой ее conexiГіn перед тем, как распределять ее в SQLCommand.
public bool IngresarUsuario(Prueba objeto)
{
using (SqlConnection con = new SqlConnection(strConnection))
{
try
{
con.Open();
query= ("insert into Pruebas (Id,Nombre,Componente)values (@Id,@Nombre,@Componente)");
SqlCommand comando = new SqlCommand(query,con);
comando.CommandType = CommandType.Text;
comando.Connection = cadena;
comando.Parameters.AddWithValue("@Id", objeto.Id);
comando.Parameters.AddWithValue("@Nombre", objeto.Nombre);
comando.Parameters.AddWithValue("@Componente", objeto.Componente);
if (Convert.ToBoolean(comando.ExecuteNonQuery()))
{
return true;
}
else
{
return false;
}
}
catch(SqlException sqlEx)
{
// aquí hacer log o lo que sea
}
catch(Exception ex)
{
// aquí hacer log o lo que sea
}
finally
{
// ¿Es necesario este bloque?
}
}
}
Доказательство снимая следующую линию:
comando.Connection = cadena; // cadena == null ??
Я не знаю, что cadena
(ты это не показываешь), но не кажется правильным, который ты использовал здесь, и вероятно будьте в null
. В любом случае, ты не нуждаешься в том, чтобы сделать это, так как ты перемещаешь связь в объект comando
в Вашем строителе:
SqlCommand comando = new SqlCommand(query,con); // ya le estás pasando "con" aquí
Не необходимо вновь называть Connection, так как, когда ты это делаешь...
SqlCommand comando = new SqlCommand(query,con);
Автоматически ты показываешь query и связь, которую он будет реализовывать. Также тебе надо закрывать связь, если не, когда ты хочешь открыть другую, тебя пометит ошибка.
using
. Нет необходимости это делать expl и # 237; citamente. OP est и # 225; принося пользу.
– sstan
08.11.2016, 01:03