Conectividad de base de datos usando C/C++

SQL (lenguaje de consulta estructurado) es un lenguaje de cuarta generación (4GL) que se utiliza para definir, manipular y controlar un RDBMS (sistema de gestión de bases de datos relacionales).

Antes de comenzar el artículo principal, familiaricémonos con las herramientas utilizadas.

Compilador: Code::Blocks IDE con el compilador MinGW

Enlace de descarga: Código de descarga binaria ::Blocks es un compilador cruzado (puede ejecutarse en cualquier plataforma como Windows, Linux y Mac) y su descarga es gratuita. Este IDE está especialmente diseñado para C y C++ y es fácil de usar.

API: Vamos a utilizar la biblioteca SQLAPI++

Enlace de descarga: Descarga SQLAPI

SQLAPI++ es una biblioteca de C++ (básicamente un conjunto de archivos de encabezado) para acceder a múltiples bases de datos SQL (Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL, SQLite, SQL Anywhere y ODBC). Es fácil de implementar y simple.

OCCI: interfaz de llamadas de Oracle C++

Enlace de descarga: Descarga de OCCI C++  OCCI es una interfaz definida por la empresa de bases de datos ORACLE que define una interfaz cómoda para que el programador de C++ acceda a la base de datos Oracle con clases utilizando parámetros que recuerdan a las declaraciones SQL. La interfaz existe para ORACLE 9i, ORACLE 10 y viene con Oracle.

Debemos descargar e instalar los tres anteriores (si no los tenemos). Ahora estamos casi listos para comenzar.

  Algunas configuraciones antes de comenzar: -> Abra el código::bloquea IDE y vaya o haga clic en configuración -> configuración del compilador y del depurador (ahora verá la configuración global del compilador) -> Ahora haga clic en « Configuración del enlazador» en la configuración del enlazador, haga clic en en el botón AGREGAR y agregue lo siguiente Para el sistema operativo Windows : Código:C:\SQLAPI\lib\libsqlapiddll.a C:\Program Files\CodeBlocks\MinGW\lib\libuser32.a C:\Program Files\CodeBlocks\MinGW\lib\libversion.a C:\Program Files\CodeBlocks\MinGW\ lib\liboleaut32.a C:\Program Files\CodeBlocks\MinGW\lib\libole32.a Estos se encontrarán en su SQLAPI++ (si no ha extraído en la unidad C:, seleccione la ubicación adecuada y agregue los archivos mencionados a la configuración del enlazador ). El código anterior se usa para agregar archivos de biblioteca para conectar el programa C/C++ con SQLAPI. Básicamente, hay 2 pasos:

  1. Conexión a la base de datos (y manejo de errores) Código: 

C

// C++ program for connecting to database (and error handling)
#include<stdio.h>
#include<SQLAPI.h>         // main SQLAPI++ header
  
int main(int argc, char* argv[])
{
    // create connection object to connect to database
    SAConnection con;
    try
    {
        // connect to database
        // in this example, it is Oracle,
        // but can also be Sybase, Informix, DB2
        // SQLServer, InterBase, SQLBase and ODBC
        con.Connect ("test",    // database name
                     "tester",  // user name
                     "tester",  // password
                     SA_Oracle_Client); //Oracle Client
        printf("We are connected!\n");
  
        // Disconnect is optional
        // autodisconnect will occur in destructor if needed
        con.Disconnect();
        printf("We are disconnected!\n");
    }
  
    catch(SAException & x)
    {
        // SAConnection::Rollback()
        // can also throw an exception
        // (if a network error for example),
        // we will be ready
        try
        {
            // on error rollback changes
            con.Rollback ();
        }
        catch(SAException &)
        {
        }
        // print error message
        printf("%s\n", (const char*)x.ErrText());
    }
    return 0;
}
  1. Producción:
We are Connected!
We are Disconnected!
  1. Ejecutar un comando SQL simple Ahora, buscaremos ejecutar una consulta SQL simple. En primer lugar, crear una tabla para la base de datos: crear tabla tb1 (número de identificación, nombre varchar (20);

Ahora, establezca la conexión a la base de datos y luego, después de su con.connect; debe usar el método cmd.setCommandText para pasar la consulta a la base de datos, es como se muestra a continuación:

con.Connect("test", "tester", "tester", SA_Oracle_Client);
cmd.setCommandText("create table tb1(id number, name varchar(20));”);
  1. y ahora, para ejecutar la consulta tenemos que usar el siguiente comando: cmd.Execute(); Código completo: 

C

#include<stdio.h>
#include <SQLAPI.h> // main SQLAPI++ header
int main(int argc, char* argv[])
{
    SAConnection con; // connection object to connect to database
    SACommandcmd;    // create command object
    try
    {
        // connect to database (Oracle in our example)
        con.Connect("test", "tester", "tester", SA_Oracle_Client);
  
        // associate a command with connection
        // connection can also be specified in SACommand constructor
        cmd.setConnection(&con);
  
        // create table
        cmd.setCommandText("create table tbl(id number, name varchar(20));");
        cmd.Execute();
  
        // insert value
        cmd.setCommandText("Insert into tbl(id, name) values (1,”Vinay”)");
        cmd.setCommandText("Insert into tbl(id, name) values (2,”Kushal”)");
        cmd.setCommandText("Insert into tbl(id, name) values (3,”Saransh”)");
        cmd.Execute();
  
        // commit changes on success
        con.Commit();
        printf("Table created, row inserted!\n");
    }
  
    catch(SAException &x)
    {
        // SAConnection::Rollback()
        // can also throw an exception
        // (if a network error for example),
        // we will be ready
        try
        {
            // on error rollback changes
            con.Rollback();
        }
        catch(SAException &)
        {
        }
        // print error message
  
        printf("%s\n", (const char*)x.ErrText());
    }
    return 0;
}

Como sabemos, Oracle no se compromete automáticamente (comprometer es hacer un reflejo permanente de los datos en la base de datos), por lo que tenemos que confirmarlo.

con.Commit();

y de manera similar, podemos revertir las transacciones cuando ocurre una excepción, por lo que usamos:

con.Rollback();

Para eliminar una fila, usamos este comando.

cmd.setCommandText("delete from tb1 where id= 2");

Por lo tanto, al final de este artículo, hemos aprendido cómo conectar su programa C/C++ a la base de datos y realizar manipulaciones.

Este artículo es una contribución de Vinay Garg . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *