zoukankan      html  css  js  c++  java
  • c++ Oracle OCCI 编程

    OCCI数据库Oracle编程步骤
    1. 配置环境
    (1) Occi访问数据库需要occi.h头文件,此文件在oracle安装目录下,必须有oracle库的支持。安装oracle服务端或客户端;
    (2) 配置NLS_LANG环境变量,必须与数据库的字符编码一致,否则可能出现中文乱码;
    (3) 配置环境变量,使客户端支持中文显示;
    (4) 安装C++编程工具和g++编译工具。
    2. 编写C++程序
    (1) Environment类创建occi环境变量;
    (2) Environment类下的createConnection方法创建连接数据库的Connection对象;
    (3) Statement类创建对象,由数据库连接对象调用createStatement方法创建;
    (4) Statement类创建对象调用setSQL()准备SQL语句;
    (5) Statement类创建对象调用execute()或executeUpdate()或executeQurey()或executeArrayUpdate()方法执行查询,如果是查询的,创建ResultSet对象接收数据集;如果是数据更新回插入:Statement:: setAutoCommit (TRUE); 设置自动提交;Statement::setAutoCommit(FALSE); 设置手动提交,手动提交:Connection::commit();Connection::rollback();
    (6) Statement类创建对象调用getxxx()方法获取字段数据;
    (7) terminateStatement()终止Statement对象;
    (8) terminateConnection()断开数据库连接;
    (9) Environment::terminateEnvironment()终止环境变量。

    1. #include <iostream>  
    2. #include <occi.h>//occi头文件  
    3. //声明命名空间  
    4. using namespace oracle::occi;  
    5. using namespace std;  
    6.   
    7. int main ()   
    8. {  
    9.         Environment *env;   
    10.         Connection *conn;   
    11.         Statement *stmt;  
    12.         ResultSet *rs;  
    13.   
    14.         string username = "system";//用户名  
    15.         string password = "st1234";//密码  
    16.         string connstring = "orcl";//数据库连接字符串  
    17.         string sql,strname;  
    18.         int isno;  
    19.   
    20.         env = Environment::createEnvironment();//创建环境变量  
    21.         conn = env->createConnection(username,password,connstring); //创建数据库连接对象  
    22.         stmt = conn->createStatement();//创Statement对象  
    23.   
    24.         sql = " SELECT u_id,u_name,to_char(u_date,'yyyy-mm-dd hh24:mi:ss') FROM student";  
    25.         stmt->setSQL(sql);//准备SQL语句  
    26.         try  
    27.         {  
    28.                 rs =  stmt->executeQuery();//执行SQL语句,返回结果集  
    29.                 while (rs->next()) //取数据  
    30.                 {  
    31.                         isno = rs->getInt(1);  
    32.                         strname=rs->getString(2);   
    33.                         cout<< isno << "  AND  " << strname << endl;  
    34.                         cout<<rs->getString(3)<<endl;  
    35.                 }  
    36.                 cout <<"SELECT  SUCCESS" << endl;  
    37.         }   
    38.         catch(SQLException ex) //异常处理  
    39.         {  
    40.                 cout << " Error Number "<< ex.getErrorCode() << endl;  
    41.                 cout << ex.getMessage() << endl;  
    42.         }  
    43.         conn->terminateStatement(stmt);//终止Statement对象  
    44.         env->terminateConnection(conn);//断开数据库连接  
    45.         Environment::terminateEnvironment(env);// 终止环境变量  
    46.         return 1;  
    47. }  

    3. 编写makefile文件
    Makefile:
    includepath=${ORACLE_HOME}/rdbms/public
    libpath=${ORACLE_HOME}/lib
    libfile=-L ${libpath} -locci -lclntsh /usr/lib/libstdc++.so.5
    incfile=-I ${includepath}

    occiselect:select.cpp
            g++ -o occiselect select.cpp  ${libfile} ${incfile}
    clean:
            rm occiselect
    4. 编译程序
    Make occiselect.

  • 相关阅读:
    懒加载——实现原理
    html5shiv.js和respond.min.js
    点击app分享链接,js判断手机是否安装某款app,有就尝试打开,没有就下载
    ajax获取后台数据渲染(整片文章不分段落)解决方案,要使用htmL方式输出
    +-下拉菜单
    html 中a标签的问题(无反应,跳转,调用方法)
    js中两种定时器,setTimeout和setInterval的区别
    chrome 调试进入 paused in debugger 状态解决办法
    mybatis-plus 获取新增id
    linux unzip和zip
  • 原文地址:https://www.cnblogs.com/shan2017/p/7889713.html
Copyright © 2011-2022 走看看