es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error ExecuteNonQuery: La propiedad de conexión no ha sido inicializada C# (Access)

Tengo un código como este:

var queryIns = “…”;

try
{
var rowInsert = u.insert(queryIns);
}
catch (Exception)
{
var msg = “Error”;
MessageBox.Show(msg,…);
}

y mi comando es:

public int Command(string queryCommand)
{
using var conn = openConnection(); //método privado que devuelve la conexión con la cadena de conexión
using OleDbCommand cmd = getCommand(queryCommand, conn); //método privado que devuelve el comando con la conexión y la consulta
return cmd.ExecuteNonQuery();
}

Finalmente, estos son los métodos:

private OleDbCommand getCommand(string queryString, OleDbConnection conn)
{
using var cmd = new OleDbCommand(queryString, conn);
return cmd;
}

private OleDbConnection openConnection()
{
using var conn = new OleDbConnection(connString);
conn.Open();
return conn;
}

El problema es que todo esto produce una excepción:

ExecuteNonQuery: La propiedad Connection no se ha inicializado

¿Podría alguien ayudarme T_T?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el método openConnection() que no está inicializando correctamente la conexión. Aquí hay algunos pasos para ayudar a solucionar y arreglar el problema:

    1. Verifique que la variable connString esté definida correctamente con la cadena de conexión correcta.
    2. Verifique que el método openConnection() realmente esté devolviendo un objeto conn colocando un punto de interrupción y pasando por el código.
    3. Si el objeto conn no se está devolviendo, intente modificar el método openConnection() para establecer explícitamente la cadena de conexión antes de abrir la conexión, así:
    private OleDbConnection openConnection()
    {
        using var conn = new OleDbConnection();
        conn.ConnectionString = connString;
        conn.Open();
        return conn;
    }
    

    Estableciendo explícitamente la cadena de conexión antes de abrir la conexión, esto puede ayudar a asegurar que la conexión esté inicializada correctamente y pueda ser usada en comandos posteriores.

    1. Si ninguno de los pasos anteriores funciona, intente modificar el método Command() para establecer explícitamente la propiedad de conexión del objeto cmd así:
    public int Command(string queryCommand)
    {
        using var conn = openConnection();
        using OleDbCommand cmd = getCommand(queryCommand, conn);
        cmd.Connection = conn; // agregar esta línea
        return cmd.ExecuteNonQuery();
    }
    

    Al establecer la propiedad de conexión del objeto cmd con la conexión devuelta por openConnection(), esto puede ayudar a asegurar que la conexión esté inicializada correctamente y pueda ser usada en el método ExecuteNonQuery().

    Con suerte, uno de estos pasos ayudará a resolver el problema y permitirá que el código se ejecute sin excepciones.

Comments are closed.