⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 occicoll.cpp

📁 此源代码是通过occi连接oracle 9i的简单例子
💻 CPP
字号:
/***occicoll - To exhibit simple insert, delete & update operations"*     " on table having a Nested Table column**Description*  Create a program which has insert,delete and update on a* table having a Nested table column.*Perform all these operations using  interface.*/#include <iostream>#include <algorithm>#include <occi.h>using namespace oracle::occi;using namespace std;typedef vector<string> journal;class occicoll{  private:  Environment *env;  Connection *conn;  Statement *stmt;  string tableName;  string typeName;  public:  occicoll (string user, string passwd, string db)  {    env = Environment::createEnvironment (Environment::OBJECT);    conn = env->createConnection (user, passwd, db);  }  ~occicoll ()  {    env->terminateConnection (conn);    Environment::terminateEnvironment (env);  }  void setTableName (string s)  {    tableName = s;  }  /**   * Insertion of a row    */  void insertRow ()  {    int c1 = 11;    journal c2;    c2.push_back ("LIFE");    c2.push_back ("TODAY");    c2.push_back ("INVESTOR");        cout << "Inserting row with jid = " << 11 <<       " and journal_tab (LIFE, TODAY, INVESTOR )" << endl;    try{    stmt = conn->createStatement (     "INSERT INTO journal_tab (jid, jname) VALUES (:x, :y)");    stmt->setInt (1, c1);    setVector (stmt, 2, c2, "JOURNAL");    stmt->executeUpdate ();    }catch(SQLException ex)    {     cout<<"Exception thrown for insertRow"<<endl;     cout<<"Error number: "<<  ex.getErrorCode() << endl;     cout<<ex.getMessage() << endl;    }    cout << "Insertion - Successful" << endl;    conn->terminateStatement (stmt);  }  // Displaying all the rows of the table  void displayAllRows ()  {    cout << "Displaying all the rows of the table" << endl;    stmt = conn->createStatement (      "SELECT jid, jname FROM journal_tab");    journal c2;        ResultSet *rs = stmt->executeQuery();    try{    while (rs->next())    {      cout << "jid: " << rs->getInt(1) << endl;      cout << "jname: ";      getVector (rs, 2, c2);      for (int i = 0; i < c2.size(); ++i)        cout << c2[i] << " ";      cout << endl;    }   }catch(SQLException ex)    {     cout<<"Exception thrown for displayRow"<<endl;     cout<<"Error number: "<<  ex.getErrorCode() << endl;     cout<<ex.getMessage() << endl;    }    stmt->closeResultSet (rs);    conn->terminateStatement (stmt);  } // End of displayAllRows()  // Deleting a row of the nested table of strings  void deleteRow (int c1, string str)  {    cout << "Deleting a row of the nested table of strings" << endl;    stmt = conn->createStatement (      "SELECT jname FROM journal_tab WHERE jid = :x");    journal c2;    stmt->setInt (1, c1);        ResultSet *rs = stmt->executeQuery();    try{    if (rs->next())    {      getVector (rs, 1, c2);      c2.erase (find (c2.begin(), c2.end(), str));     }    stmt->setSQL ("UPDATE journal_tab SET jname = :x WHERE jid = :y");    stmt->setInt (2, c1);    setVector (stmt, 1, c2, "JOURNAL");    stmt->executeUpdate ();    }catch(SQLException ex)    {     cout<<"Exception thrown for delete row"<<endl;     cout<<"Error number: "<<  ex.getErrorCode() << endl;     cout<<ex.getMessage() << endl;    }    cout << "Deletion - Successful" << endl;    conn->commit();    stmt->closeResultSet (rs);    conn->terminateStatement (stmt);  } // End of deleteRow (int, string)  // Updating a row of the nested table of strings  void updateRow (int c1, string str)  {    cout << "Updating a row of the nested table of strings" << endl;    stmt = conn->createStatement (      "SELECT jname FROM journal_tab WHERE jid = :x");    journal c2;        stmt->setInt (1, c1);    ResultSet *rs = stmt->executeQuery();    try{    if (rs->next())    {      getVector (rs, 1, c2);      c2[0] = str;    }    stmt->setSQL ("UPDATE journal_tab SET jname = :x WHERE jid = :y");    stmt->setInt (2, c1);    setVector (stmt, 1, c2, "JOURNAL");    stmt->executeUpdate ();    }catch(SQLException ex)    {     cout<<"Exception thrown for updateRow"<<endl;     cout<<"Error number: "<<  ex.getErrorCode() << endl;     cout<<ex.getMessage() << endl;    }    cout << "Updation - Successful" << endl;    conn->commit();    stmt->closeResultSet (rs);    conn->terminateStatement (stmt);  } // End of UpdateRow (int, string)  void cleanup()  {    stmt = conn->createStatement ("DELETE FROM journal_tab");    stmt->execute();    stmt->setSQL ("INSERT INTO journal_tab (jid, jname) VALUES (22, journal ('NATION', 'TIMES'))");    stmt->executeUpdate();    stmt->setSQL ("INSERT INTO journal_tab (jid, jname) VALUES (33, journal ('CRICKET', 'ALIVE'))");    stmt->executeUpdate();    conn->commit();    conn->terminateStatement (stmt);  }};//end of class occicollint main (void){  string user = "SCOTT";  string passwd = "TIGER";  string db = "";  try  {    cout << "occicoll - Exhibiting simple insert, delete & update operations"      " on table having a Nested Table column" << endl;    occicoll *demo = new occicoll (user, passwd, db);    cout << "Displaying all rows before the operations" << endl;    demo->displayAllRows ();    demo->insertRow ();    demo->deleteRow (11, "TODAY");      demo->updateRow (33, "New_String");    cout << "Displaying all rows after all the operations" << endl;    demo->displayAllRows ();    demo->cleanup();    delete (demo);    cout << "occicoll - done" << endl;  }catch (SQLException ea)  {    cerr << "Error running the demo: " << ea.getMessage () << endl;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -