Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Acceso a BD ODBC con Visual C# C Sharp para select count
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Acceso a BD ODBC con Visual C# C Sharp para select count

Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Acceso a BD ODBC con Visual C# C Sharp para select count Responder citando

Necesito ejecutar una consulta sencilla SQL que me devuelve el número de registros de una tabla. La tabla es PostgreSQL, el servidor de PostgreSQL está en Linux y tengo un usuario, contraseña e IP del servidor. Necesito ejecutar una consulta SQL del tipo:

Select count(*) from facturas where codigocliente = 123

Tengo que hacer la conexión con Visual C# que es el lenguaje de programación que me obligan a usar en mi empresa. La conexión a la BD de PostgreSQL la realizo mediante el ODBC, lo he instalado y configurado y el test de conexión lo realiza correctamente.

¿Cómo puedo ejecutar una consulta SQL mediante ODBC en Visual C# y obtener el valor que devuelve?
MensajePublicado:
Lun Jul 02, 2012 9:35 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Acceso a BD ODBC con Visual C# C Sharp para select count Responder citando



Anuncios



varios escribió:
Necesito ejecutar una consulta sencilla SQL que me devuelve el número de registros de una tabla. La tabla es PostgreSQL, el servidor de PostgreSQL está en Linux y tengo un usuario, contraseña e IP del servidor. Necesito ejecutar una consulta SQL del tipo:

Select count(*) from facturas where codigocliente = 123

Tengo que hacer la conexión con Visual C# que es el lenguaje de programación que me obligan a usar en mi empresa. La conexión a la BD de PostgreSQL la realizo mediante el ODBC, lo he instalado y configurado y el test de conexión lo realiza correctamente.

¿Cómo puedo ejecutar una consulta SQL mediante ODBC en Visual C# y obtener el valor que devuelve?


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:

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);
  }
MensajePublicado:
Lun Jul 02, 2012 9:53 pm
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: [RESUELTO] Acceso a BD ODBC con Visual C# C Sharp Responder citando



Anuncios



Muchas gracias por la información, me sirvió y funciona perfectamente.
Veo que con lo que me has indicado el ODBC debe estar creado en el PC desde "Herramientas administrativas" - "Orígenes de datos ODBC". Pues en el código se hace referencia a un origen de datos previamente creado por el usuario:

Código:

    conexionBDODBC = new OdbcConnection("dsn=" + lsODBC.Text +
        ";UID=" + txtUsuario.Text + ";PWD=" + txtContrasena.Text + ";");


En "dsn" le indicamos el nombre del origen de datos ya creado.

Mi duda es ¿se puede hacer una conexión ODBC directamente desde Visual C# .Net sin que esté creado en el equipo en Orígenes de datos?
MensajePublicado:
Sab Jul 07, 2012 6:32 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: [RESUELTO] Acceso a BD ODBC con Visual C# C Sharp Responder citando



Anuncios



varios escribió:
Muchas gracias por la información, me sirvió y funciona perfectamente.
Veo que con lo que me has indicado el ODBC debe estar creado en el PC desde "Herramientas administrativas" - "Orígenes de datos ODBC". Pues en el código se hace referencia a un origen de datos previamente creado por el usuario:

Código:

    conexionBDODBC = new OdbcConnection("dsn=" + lsODBC.Text +
        ";UID=" + txtUsuario.Text + ";PWD=" + txtContrasena.Text + ";");


En "dsn" le indicamos el nombre del origen de datos ya creado.

Mi duda es ¿se puede hacer una conexión ODBC directamente desde Visual C# .Net sin que esté creado en el equipo en Orígenes de datos?


Sí es posible, puedes acceder a un servidor de base de datos usando ODBC y Visual C# .Net sin necesidad de que el origen de datos exista en el PC, el único requerimiento obvio es que esté instalado el driver correspondiente y has de saber el nombre exacto del driver. Por ejemplo, si quieres acceder a una base de datos PostgreSQL previamente habrás instalado el driver de PostgreSQL para ODBC (psqlODBC) como indicamos aquí:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=434#instalacionodbc

Una vez instalado hay que conocer exactamente el nombre del driver pues lo necesitaremos más adelante en nuestro código Visual C# .Net. Para el caso de PostgreSQL hay dos drivers:

PostgreSQL ANSI
PostgreSQL Unicode

A continuación te indicamos los nombres de algunos más:

Microsoft Access Driver (*.mdb)
Microsoft dBase Driver (*.dbf)
Microsoft Excel Driver (*.xls)
Microsoft FoxPro VFP Driver (*.dbf)
Microsoft ODBC for Oracle
Microsoft Paradox Driver (*.db)
Microsoft Text Driver (*.txt; *.csv)
Microsoft Visual FoxPro Driver
MySQL ODBC 5.1 Driver
PostgreSQL ANSI
PostgreSQL Unicode
SQL Server
Firebird/Interbase(r) driver
Oracle en OraClient10g_home1
SQLite3 ODBC Driver

Muchos de los drivers ODBC anteriores ya suelen venir instalados con el sistema operativo Microsoft Windows 7. Si no vienen instalados tendrás que instalarlo, por ejemplo, si tu bd es PostgreSQL tendrás que instalar el ODBC de PostgreSQL como ya te hemos comentado.

Una vez instalado y consultado su nombre puedes usar el siguiente código Visual C# .Net para acceder a la base de datos ODBC sin necesidad de crear el origen de datos en el PC:

Código:

  conexionBDODBC = new OdbcConnection("DRIVER={PostgreSQL ANSI};" +
    SERVER=" + txtServidor.Text +
    ";UID=" + txtUsuario.Text +
    ";PWD=" + txtContrasena.Text + ";" +
    ";DATABASE=" + txtBD.Text + ";" );
  conexionBDODBC.Open();


Como ves varían algunas cosas con respecto al código para un ODBC ya existente en el equipo:

* Por un lado ya no usamos "dsn" sino "DRIVER", aquí indicamos el nombre del driver ODBC instalado como los del listado anterior.
* Por otro lado hemos de indicarle más datos pues estamos creando una conexión a una base de datos desde cero, así pues hay que indicarle la IP o hostname del servidor y el puerto (SERVER), el nombre de usuario (UID), la contraseña (PWD), la base de datos a la que nos conectaremos (DATABASE).

Con lo anterior podrás conectarte a cualquier motor de base de datos que admita ODBC sin necesidad de tener que crear el origen de datos en el equipo.
MensajePublicado:
Sab Jul 07, 2012 7:06 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+