0% found this document useful (0 votes)
49 views

Create: Using Namespace Using Namespace Const Const Int Int Char

The document discusses the Oracle C++ Call Interface (OCCI) API, which provides C++ applications access to Oracle database data. It is an improvement over the older Oracle Call Interface (OCI) API in terms of ease of use. Engineers familiar with Java Database Connectivity (JDBC) will find OCCI similar. The document includes an example code snippet that connects to an Oracle database, executes a SQL query against a sample EMP table to retrieve employee data, and prints the results.

Uploaded by

Jegan Kennedy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views

Create: Using Namespace Using Namespace Const Const Int Int Char

The document discusses the Oracle C++ Call Interface (OCCI) API, which provides C++ applications access to Oracle database data. It is an improvement over the older Oracle Call Interface (OCI) API in terms of ease of use. Engineers familiar with Java Database Connectivity (JDBC) will find OCCI similar. The document includes an example code snippet that connects to an Oracle database, executes a SQL query against a sample EMP table to retrieve employee data, and prints the results.

Uploaded by

Jegan Kennedy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

Oracle C++ Call Interface (OCCI) is an Application Programming Interface (API) that provides C++ applications access to data

in an Oracle database. This API is a significant improvement to the Oracle Call Interface (OCI) API as far as ease of use is concerned. Engineers who have written JDBC (Java Database Connectivity) code will find the OCCI API to be quite similar to that of JDBC 1) The table that is used in the example code is:

CREATE TABLE EMP( empno NUMBER, ename VARCHAR2(10), hireDate Date);

#include <DbManager.h> #include <iostream> using namespace std; using namespace oracle::occi; const string sqlString("select empno, ename, hiredate from emp"); const string dateFormat("DD-MON-YYYY HH24:MI:SS"); int main(int argc, char **argv) { if (argc != 2) { cerr << "\nUsage: " << argv[0] << " <db-user-name>\n" << endl; exit(1); } // Initialize OracleServices DbManager* dbm = NULL; OracleServices* oras = NULL; Statement *stmt = NULL; ResultSet *resultSet = NULL; try { // Obtain OracleServices object with the default args.

dbm = new DbManager(userName); oras = dbm->getOracleServices(); // Obtain a cached connection Connection * conn = oras->connection(); // Create a statement stmt = conn->createStatement(sqlString); int empno; string ename; Date hireDate; string dateAsString; // Execute query to get a resultset resultSet = stmt->executeQuery(); while (resultSet->next()) { empno = resultSet->getInt(1); returned by the query; // get the first column // get the second column // get the third column

ename = resultSet->getString(2); returned by the query hireDate = resultSet->getDate(3); returned by the query dateAsString="";

//You cannot check for null until the data has been read if (resultSet->isNull(1)) { cout << "Employee num is null... " << endl; } if (resultSet->isNull(2)) { cout << "Employee name is null..." << endl; } if (resultSet->isNull(3)) { cout << "Hire date is null..." << endl; } else {

dateAsString=hireDate.toText(dateFormat); } cout << empno << "\t" << ename << "\t" << dateAsString << endl; } // Close ResultSet and Statement stmt->closeResultSet(resultSet); conn->terminateStatement(stmt); // Close Connection and OCCI Environment delete dbm; } catch (SQLException& ex) { if (dbm != NULL) { dbm->rollbackActions(ex, stmt, resultSet); // free resources and rollback transaction } } catch (ExoException& ex1) { cerr << "\nCaught ExoException:\n" << ex1.getExceptionText() << endl; exit(2); } } return 0;

You might also like