C++通过OCCI操作Oracle数据库(二)

2014-04-06 17:34:38 · 作者: · 浏览: 199

 

  void Employees::List()

  {

  /*

  104    * simple test method to select data from

  105    * the employees table and display the results

  106 */

  Statement *stmt = NULL;

  ResultSet *rs = NULL;

  string sql = "select EMPNO, ENAME, JOB " \

  "from EMP order by EMPNO";

  try

  {

  stmt = con->createStatement(sql);

  }

  catch (SQLException& ex)

  {

  cout 《 ex.getMessage();

  }

  if (stmt)

  {

  try

  {

  stmt->setPrefetchRowCount(32);

  rs = stmt->executeQuery();

  }

  catch (SQLException& ex)

  {

  cout 《 ex.getMessage();

  }

  if (rs)

  {

  cout 《 endl 《 setw(8) 《 left 《 "EMPNO"

  《 setw(22) 《 left 《 "ENAME"

  《 setw(27) 《 left 《 "JOB"

  《 endl;

  cout 《 setw(8) 《 left 《 "======"

  《 setw(22) 《 left 《 "===================="

  《 setw(27) 《 left 《 "========================="

  《 endl;

  while (rs->next()) {

  cout 《 setw(8) 《 left 《 rs->getInt(1)

  《 setw(22) 《 left 《 (rs->isNull(2) "n/a" : rs->getString(2))

  《 setw(27) 《 left 《 rs->getString(3)

  《 endl;

  }

  cout 《 endl;

  stmt->closeResultSet(rs);

  }

  con->terminateStatement(stmt);

  }

  }

  main.cc

  #include "Employees.h"

  using namespace std;

  using namespace oracle::occi;

  int main (void)

  {

  /*

  48    * create an instance of the Employees class,

  49    * invoke the List member, delete the instance,

  50    * and prompt to continue…

  51 */

  Employees *pEmployees = new Employees();

  pEmployees->List();

  delete pEmployees;

  cout 《 "ENTER to continue…";

  cin.get();

  return 0;

  }