Обновлять данные просит иметь открытую связь

привет сообщество надеялось, что они могут помогать мне с этой ошибкой заранее большое спасибо.

Я работаю в приложении 3 слоев, но в момент обновления моих данных от Веб приложения к базе данных он посылает мне это сообщение.

//** ExecuteNonQuery requiere una conexión abierta y disponible. El estado actual de la conexión es cerrada.

Это мой код, это у меня есть в том же классе.

//** Esta es mi cadena de conexión
   private string opcion_cadenaconexion()
    {
        string connection = ConfigurationManager.ConnectionStrings["bd_Ventas"].ConnectionString;

    }

 ///** Este es mi método que utilizo al actualizar los datos.
  private SqlCommand conexion_open(string commantext, SqlParameter[] commandparameters)
    {
        string conexion = opcion_cadenaconexion();
        SqlConnection con = new SqlConnection(conexion);

        SqlCommand cmd; 
            try
           {
            //*** Aquí abro la conexión
            con.Open(); 
            cmd = new SqlCommand(commantext, con);
            cmd.CommandType = CommandType.StoredProcedure;
            agregar_parameter(cmd, commandparameters);

           }
           finally
            {
              //*** Aquí cierro la conexión
                con.Close();
            }

            return cmd;

    }

  //** Este es el método que utilizo al actualizar mis datos a la bd donde recibe como parámetros el procedimiento almacenado y los parámetros
  public void ExecuteDataTable(string commantext, SqlParameter[] commandParameters)
    {
        DataTable dt = new DataTable();
        try
        {

            SqlDataAdapter da = new SqlDataAdapter();
           //*** Aqui mando a llamar al método de arriba conexion_open
            da.UpdateCommand = conexion_open(commantext, commandParameters);
            da.UpdateCommand.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            throw ex;
        }


    }

  //*****  Aquí mando a traer mi método anterior en otra clase.

  public void Actualizar_Datos(int id_persona, string nombre, string no_empleado)
    {
        SqlParameter[] sqlparameter = 
        { 
            new SqlParameter ("@Id_persona",SqlDbType.Int),
            new SqlParameter ("@nombre", SqlDbType.VarChar,100),
            new SqlParameter ("@no_empleado", SqlDbType.VarChar,50)

        };

        sqlparameter[0].Value = id_persona;
        sqlparameter[1].Value = nombre;
        sqlparameter[2].Value = no_empleado;

         ///*** "Actualiza_Datos" es el nombre del procedimiento almacenado
        _conexion.ExecuteDataTable("Actualiza_Datos", sqlparameter);

    }

Кто-то может помогать мне решать это?. Большое спасибо.

0
задан 23.10.2019, 18:12
1 ответ

Нет return

   private string opcion_cadenaconexion()
{
    string connection = ConfigurationManager.ConnectionStrings["bd_Ventas"].ConnectionString;

}    

Должен return connection;

0
ответ дан 01.12.2019, 15:03