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:
- 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; }
- Producción:
We are Connected! We are Disconnected!
- 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));”);
- 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