A continuación te indicamos cómo puedes hacer esta conexión mediante ODBC a una BD de PosgreSQL desde una aplicación Visual C#:
1. Primero has de realizar la conexión a la BD:
Donde:
* lsODBC: es un componente de tipo ComboBox donde mostramos los orígenes de datos ODBC instalados en el equipo.
* txtUsuario: TextBox donde se debe introducir el usuario con el que nos conectaremos a la BD, si se deja en blanco se asume el usuario del ODBC.
* txtContrasena: TextBox con la contraseña del usuario anterior.
Una vez conectado con el objeto conexionBDODBC, puedes ejecutar la consulta SQL que quieras, por ejemplo, para un "select count()...":
Como ves para consultas SQL que devuelven un sólo registro o fila se usa "OdbcCommand.ExecuteScalar", si quieres ejecutar consultas SQL que no devuelven resultados (INSERT, DELETE, UPDATE) deberás usar OdbcCommand.ExecuteNonQuery (esto te devolverá el número de filas afectadas) y para ejecutar consultas SQL que devuelvan varias filas o registros puedes usar "OdbcCommand.ExecuteReader". El uso de éste último, para recorrer todas las filas o registros devueltos sería algo así:
1. Primero has de realizar la conexión a la BD:
Código: |
OdbcConnection conexionBDODBC = new OdbcConnection(); try { conexionBDODBC = new OdbcConnection("dsn=" + lsODBC.Text + ";UID=" + txtUsuario.Text + ";PWD=" + txtContrasena.Text + ";"); conexionBDODBC.Open(); if (conexionBDODBC.State == ConnectionState.Open) { MessageBox.Show("Conectado a la base de datos."); } else { MessageBox.Show("No conectado a la base de datos."); } } catch (Exception error) { MessageBox.Show("Error de base de datos: " + System.Environment.NewLine + System.Environment.NewLine + error.GetType().ToString() + System.Environment.NewLine + error.Message, "Error al crear PDF", MessageBoxButtons.OK, MessageBoxIcon.Error); } |
Donde:
* lsODBC: es un componente de tipo ComboBox donde mostramos los orígenes de datos ODBC instalados en el equipo.
* txtUsuario: TextBox donde se debe introducir el usuario con el que nos conectaremos a la BD, si se deja en blanco se asume el usuario del ODBC.
* txtContrasena: TextBox con la contraseña del usuario anterior.
Una vez conectado con el objeto conexionBDODBC, puedes ejecutar la consulta SQL que quieras, por ejemplo, para un "select count()...":
Código: |
OdbcCommand comandoSQL; string consultaSQL; consultaSQL = "Select count(*) from facturas where codigocliente = 123"; try { comandoSQL = new OdbcCommand(consultaSQL, conexionBDODBC); int numeroRegistros = Convert.ToInt32(comandoSQL.ExecuteScalar()); MessageBox.Show("Número registros: " + Convert.ToString(numeroRegistros)); } catch (Exception ex) { MessageBox.Show("Error al ejecutar SQL: " + System.Environment.NewLine + System.Environment.NewLine + ex.GetType().ToString() + System.Environment.NewLine + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } |
Como ves para consultas SQL que devuelven un sólo registro o fila se usa "OdbcCommand.ExecuteScalar", si quieres ejecutar consultas SQL que no devuelven resultados (INSERT, DELETE, UPDATE) deberás usar OdbcCommand.ExecuteNonQuery (esto te devolverá el número de filas afectadas) y para ejecutar consultas SQL que devuelvan varias filas o registros puedes usar "OdbcCommand.ExecuteReader". El uso de éste último, para recorrer todas las filas o registros devueltos sería algo así:
Código: |
try { OdbcCommand comandoSQL; string consultaSQL; consultaSQL = "select importe from facturas where codigocliente = 123"; comandoSQL = new OdbcCommand(consultaSQL, conexionBDODBC); OdbcDataReader resultadoSQL = comandoSQL.ExecuteReader(CommandBehavior.CloseConnection); while (resultadoSQL.Read()) { txtResultado.Text = txtResultado.Text + Environment.NewLine + resultadoSQL.GetString(0); } resultadoSQL.Close(); } catch (Exception ex) { MessageBox.Show("Error al ejecutar SQL: " + System.Environment.NewLine + System.Environment.NewLine + ex.GetType().ToString() + System.Environment.NewLine + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } |
No hay comentarios:
Publicar un comentario