Principales respuestas
¿Cómo mostrar datos con procedimientos de c# usando mysql por conección odbc?

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!
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
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
-