| /* Copyright (c) 2001, 2006, Oracle. All rights reserved. */ |
| /* |
| NAME |
| occiobj.cpp - OCCI Embedded Object demo |
| |
| DESCRIPTION |
| This demo performs all DML operations using OCCI interface |
| on embedded object column of table |
| |
| |
| MODIFIED (MM/DD/YY) |
| sudsrini 10/22/06 - Username/Password lower case |
| lburgess 04/14/06 - lowercase passwords |
| sudsrini 07/23/04 - Copyright Info |
| idcqe 03/05/01 - Creation |
| |
| */ |
| |
| #include <iostream> |
| #include "occiobjm.h" |
| |
| using namespace oracle::occi; |
| using namespace std; |
| |
| class occiobj |
| { |
| private: |
| |
| Environment *env; |
| Connection *con; |
| Statement *stmt; |
| public: |
| |
| occiobj (string user, string passwd, string db) |
| { |
| env = Environment::createEnvironment (Environment::OBJECT); |
| occiobjm (env); |
| con = env->createConnection (user, passwd, db); |
| } |
| |
| ~occiobj () |
| { |
| env->terminateConnection (con); |
| Environment::terminateEnvironment (env); |
| } |
| |
| /** |
| * Insertion of a row |
| */ |
| void insertRow (int c1, int a1, string a2) |
| { |
| cout << "Inserting record - Publisher id :" << c1 << |
| ", Publisher address :" << a1 << ", " << a2 <<endl; |
| string sqlStmt = "INSERT INTO publisher_tab VALUES (:x, :y)"; |
| try{ |
| stmt = con->createStatement (sqlStmt); |
| stmt->setInt (1, c1); |
| address *o = new address (); |
| o->setStreet_no (Number (a1)); |
| o->setCity (a2); |
| stmt->setObject (2, o); |
| stmt->executeUpdate (); |
| cout << "Insert - Success" << endl; |
| delete (o); |
| }catch(SQLException ex) |
| { |
| cout<<"Exception thrown for insertRow"<<endl; |
| cout<<"Error number: "<< ex.getErrorCode() << endl; |
| cout<<ex.getMessage() << endl; |
| } |
| |
| con->terminateStatement (stmt); |
| } |
| |
| |
| /** |
| * updating a row |
| */ |
| void updateRow (int c1, int a1, string a2) |
| { |
| cout << "Upadating record with publisher id :"<< c1 << endl; |
| string sqlStmt = |
| "UPDATE publisher_tab SET publisher_add= :x WHERE publisher_id = :y"; |
| try{ |
| stmt = con->createStatement (sqlStmt); |
| address *o = new address (); |
| o->setStreet_no (Number (a1)); |
| o->setCity (a2); |
| stmt->setObject (1, o); |
| stmt->setInt (2, c1); |
| stmt->executeUpdate (); |
| cout << "Update - Success" << endl; |
| delete (o); |
| }catch(SQLException ex) |
| { |
| cout<<"Exception thrown for updateRow"<<endl; |
| cout<<"Error number: "<< ex.getErrorCode() << endl; |
| cout<<ex.getMessage() << endl; |
| } |
| con->terminateStatement (stmt); |
| } |
| |
| |
| /** |
| * deletion of a row |
| */ |
| void deleteRow (int c1, int a1, string a2) |
| { |
| cout << "Deletion of record where publisher id :" << c1 <<endl; |
| string sqlStmt = |
| "DELETE FROM publisher_tab WHERE publisher_id= :x AND publisher_add = :y"; |
| try{ |
| stmt = con->createStatement (sqlStmt); |
| stmt->setInt (1, c1); |
| |
| address *o = new address (); |
| o->setStreet_no (Number (a1)); |
| o->setCity (a2); |
| stmt->setObject (2, o); |
| stmt->executeUpdate (); |
| cout << "Delete - Success" << endl; |
| delete (o); |
| }catch(SQLException ex) |
| { |
| cout<<"Exception thrown for deleteRow"<<endl; |
| cout<<"Error number: "<< ex.getErrorCode() << endl; |
| cout<<ex.getMessage() << endl; |
| } |
| |
| con->terminateStatement (stmt); |
| } |
| |
| /** |
| * displaying all the rows in the table |
| */ |
| void displayAllRows () |
| { |
| string sqlStmt = "SELECT publisher_id, publisher_add FROM publisher_tab \ |
| order by publisher_id"; |
| try{ |
| stmt = con->createStatement (sqlStmt); |
| ResultSet *rset = stmt->executeQuery (); |
| |
| while (rset->next ()) |
| { |
| cout << "publisher id: " << rset->getInt (1) |
| << " publisher address: address (" ; |
| address *o = (address *)rset->getObject (2); |
| cout << (int)o->getStreet_no () << ", " << o->getCity () << ")" << endl; |
| } |
| |
| stmt->closeResultSet (rset); |
| }catch(SQLException ex) |
| { |
| cout<<"Exception thrown for displayAllRows"<<endl; |
| cout<<"Error number: "<< ex.getErrorCode() << endl; |
| cout<<ex.getMessage() << endl; |
| } |
| |
| con->terminateStatement (stmt); |
| } |
| |
| };//end of class occiobj; |
| |
| |
| int main (void) |
| { |
| string user = "hr"; |
| string passwd = "hr"; |
| string db = ""; |
| |
| try |
| { |
| cout << "occiobj - Exhibiting simple insert, delete & update operations" |
| " on Oracle objects" << endl; |
| occiobj *demo = new occiobj (user, passwd, db); |
| |
| cout << "displaying all rows before operations" << endl; |
| demo->displayAllRows (); |
| |
| demo->insertRow (12, 122, "MIKE"); |
| |
| demo->deleteRow (11, 121, "ANNA"); |
| |
| demo->updateRow (23, 123, "KNUTH"); |
| |
| cout << "displaying all rows after all operations" << endl; |
| demo->displayAllRows (); |
| |
| delete (demo); |
| cout << "occiobj - done" << endl; |
| }catch (SQLException ea) |
| { |
| cerr << "Error running the demo: " << ea.getMessage () << endl; |
| } |
| } |