Quiero crear un motor de base de datos usando lenguaje C e implementar lenguaje de consulta SQL en él. ¿Cómo empiezo?

Oracle C ++ Call Interface (OCCI) es una interfaz de programación de aplicaciones (API) que proporciona a las aplicaciones C ++ acceso a datos en una base de datos Oracle. en lo que respecta a la facilidad de uso. Los ingenieros que hayan escrito el código JDBC (Java Database Connectivity) encontrarán que la API OCCI es bastante similar a la de JDBC.

La tabla que se usa en el código de ejemplo es:

crear tabla EMP

(empno NUMBER,

esmalte VARCHAR2 (10),

fecha de contratación);

Consulta de base de datos

Este programa explica cómo seleccionar el contenido de la tabla EMP.

#include
#include

usando el espacio de nombres estándar;

usando el espacio de nombres oracle :: occi;

const string sqlString (“seleccione empno, ename, hiredate de emp”);

const string dateFormat (“DD-MON-AAAA HH24: MI: SS”);

int main (int argc, char ** argv)
{
si (argc! = 2)
{
cerr << "\ nUsage:" << argv [0] << " \ n” << endl;
salida (1);
}

string userName = argv [1];

// Inicializa OracleServices

DbManager * dbm = NULL;

OracleServices * oras = NULL;

Sentencia * stmt = NULL;

ResultSet * resultSet = NULL;

tratar

{

// Obtenga el objeto OracleServices con los argumentos predeterminados.

// Los argumentos predeterminados crean OracleServices con un entorno de

// Medio ambiente :: OBJETO | Medio ambiente :: THREADED_MUTEXED

dbm = nuevo DbManager (nombre de usuario);

oras = dbm-> getOracleServices ();

// Obtener una conexión en caché

Conexión * conn = oras-> conexión ();

// Crear una declaración

stmt = conn-> createStatement (sqlString);

int empno;

esmalte de cuerda;

Fecha de contratación Fecha;

string dateAsString;

// Ejecutar consulta para obtener un conjunto de resultados

resultSet = stmt-> executeQuery ();

while (resultSet-> next ())
{
empno = resultSet-> getInt (1); // obtener la primera columna devuelta por la consulta;

ename = resultSet-> getString (2); // obtener la segunda columna devuelta por la consulta

hireDate = resultSet-> getDate (3); // obtener la tercera columna devuelta por la consulta

dateAsString = “”;

// No puede verificar si es nulo hasta que se hayan leído los datos

if (resultSet-> isNull (1))

{

cout << "El número de empleado es nulo …" << endl;

}

if (resultSet-> isNull (2))

{

cout << "El nombre del empleado es nulo …" << endl;

}

if (resultSet-> isNull (3))

{

cout << "La fecha de contratación es nula …" << endl;

}
más
{
dateAsString = hireDate.toText (dateFormat);
}

cout << empno << "\ t" << ename << "\ t" << dateAsString << endl;

}

// Cerrar ResultSet y Statement

stmt-> closeResultSet (resultSet);

conn-> terminateStatement (stmt);

// Cerrar conexión y entorno OCCI

eliminar dbm;

}

captura (SQLException y ex)

{

if (dbm! = NULL)

{
dbm-> rollbackActions (ex, stmt, resultSet); // recursos gratuitos y transacción de reversión

}

}

devuelve 0;

}

Fuentes: Desarrollar aplicaciones C y C ++ con Oracle Database 11g usando OCI