Ошибка “ExecuteNonQuery: свойство Connection не инициализировалось.”

Почему меня возвращает следующая ошибка?

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 { }
    }
}
1
задан 08.11.2016, 00:05
3 ответа

открой ее 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?
        }
    }
}
0
ответ дан 24.11.2019, 12:42

Доказательство снимая следующую линию:

comando.Connection = cadena; // cadena == null ??

Я не знаю, что cadena (ты это не показываешь), но не кажется правильным, который ты использовал здесь, и вероятно будьте в null. В любом случае, ты не нуждаешься в том, чтобы сделать это, так как ты перемещаешь связь в объект comando в Вашем строителе:

SqlCommand comando = new SqlCommand(query,con); // ya le estás pasando "con" aquí
1
ответ дан 24.11.2019, 12:42

Не необходимо вновь называть Connection, так как, когда ты это делаешь...

     SqlCommand comando = new SqlCommand(query,con);

Автоматически ты показываешь query и связь, которую он будет реализовывать. Также тебе надо закрывать связь, если не, когда ты хочешь открыть другую, тебя пометит ошибка.

1
ответ дан 24.11.2019, 12:42
  • 1
    conexi и # 243; n он закрывается autom и # 225; ticamente в конце блока using. Нет необходимости это делать expl и # 237; citamente. OP est и # 225; принося пользу. – sstan 08.11.2016, 01:03