none
¿Cómo mostrar datos con procedimientos de c# usando mysql por conección odbc? RRS feed

  • Pregunta

  • Verán tengo conectada mi base de datos por odbc, tengo este procedimiento:

    try

               

                {
                    int iMembresias = Convert.ToInt32(Cmb_membresia.SelectedValue);

                    OdbcCommand comando = new OdbcCommand("{CALL Pro_verMembresia(?)}", conexion.ObtenerConexion());
                    comando.CommandType = CommandType.StoredProcedure;
                    comando.Parameters.AddWithValue("iMembresia", iMembresias);
                    comando.ExecuteNonQuery();
                    DataTable tabla = new DataTable();
                    OdbcDataAdapter adaptador = new OdbcDataAdapter(comando);
                    Dgv_verBeneficios.DataSource = tabla;
                }
                catch (OdbcException error) { MessageBox.Show(error.Message); }
                finally
                {
                    conexion.ObtenerConexion().Close();

    Sin embargo al ejecutarlo no me muestra los datos en la tabla! ayuda por favor!

    domingo, 5 de agosto de 2018 5:05

Respuestas

  • No muestra nada porque primero has ejecutado el procedimiento usando ExecuteNonQuery, que significa "Ejecuta el procedimiento y no recojas ningún resultado". Y después has creado un dataadapter, no lo has ejecutado, y has tomado la tabla sin haber ejecutado el dataadapter que la llena. Obviamente te llega vacía.

    La solución es prescindir del ExecuteNonQuery y en su lugar llamar al método Fill de DataAdapter:

                     int iMembresias = Convert.ToInt32(Cmb_membresia.SelectedValue);
    
                     OdbcCommand comando = new OdbcCommand("{CALL Pro_verMembresia(?)}", conexion.ObtenerConexion());
                     comando.CommandType = CommandType.StoredProcedure;
                     comando.Parameters.AddWithValue("iMembresia", iMembresias);
                     DataTable tabla = new DataTable();
                     OdbcDataAdapter adaptador = new OdbcDataAdapter(comando);
                     adaptador.Fill(tabla);
                     Dgv_verBeneficios.DataSource = tabla;

    • Marcado como respuesta anonimo19 domingo, 5 de agosto de 2018 12:02
    domingo, 5 de agosto de 2018 6:20

Todas las respuestas

  • No muestra nada porque primero has ejecutado el procedimiento usando ExecuteNonQuery, que significa "Ejecuta el procedimiento y no recojas ningún resultado". Y después has creado un dataadapter, no lo has ejecutado, y has tomado la tabla sin haber ejecutado el dataadapter que la llena. Obviamente te llega vacía.

    La solución es prescindir del ExecuteNonQuery y en su lugar llamar al método Fill de DataAdapter:

                     int iMembresias = Convert.ToInt32(Cmb_membresia.SelectedValue);
    
                     OdbcCommand comando = new OdbcCommand("{CALL Pro_verMembresia(?)}", conexion.ObtenerConexion());
                     comando.CommandType = CommandType.StoredProcedure;
                     comando.Parameters.AddWithValue("iMembresia", iMembresias);
                     DataTable tabla = new DataTable();
                     OdbcDataAdapter adaptador = new OdbcDataAdapter(comando);
                     adaptador.Fill(tabla);
                     Dgv_verBeneficios.DataSource = tabla;

    • Marcado como respuesta anonimo19 domingo, 5 de agosto de 2018 12:02
    domingo, 5 de agosto de 2018 6:20
  • Gracias! me funciono!
    domingo, 5 de agosto de 2018 12:02