• oracle OCCI编程


    1. 创建OCCI环境变量

    Environment *env = Environment::createEnvironment();

    Environment对象的建立必须放在第一位,而且也必须是最后一个被终止

    2. 终止OCCI环境变量

    Environment::terminateEnvironment(env);

    3. 连接数据库

    Connection *conn = env->createConnection(usename,password,[connectionstring]);

    connectstingr是数据库的连接串 (192.168.60.84:1521/orcl)

    4. 断开数据库

    env->terminateConnection(conn);

    5. 创建连接池
    数据库的连接必须要能被许多线程所使用,如果为每个线程都开一个数据库连接的话,当数量一大效率会明显的降低,所以我们通过创建连接池来处理这样的情况

    ConnectionPool  *connPool= env->createConnectionPool(
        const  string &poolUseName,
        const  string &poolPassWord,
        const  string &connectstring,
        unsigned  int   minConn,
        unsigned  int   maxConn,
        unsigned  int   incrConn);

    poolUseName 是连接池的用户名
    poolPassWord 是连接数据库的密码
    connectstring 是数据库连接串
    minConn 是最小连接数
    maxConn 是最大连接数
    incrConn 是指所有已连接数处于繁忙中且小于最大连接数时,每次增加的连接数

    6. 断开连接池

    env->terminateConnectPool(connPoll);

    7. 创建Statement对象
    Statement类包含了执行SQL语句的所有方法,是对数据库操作的具体实现

    Statement *stmt = conn->createStatement();

    createStatement()函数可以带参数或不带参数,如果带参数的话,参数必须是一个SQL语句;如果没有带参数,则在后面必须用 Statement类下setSQL()函数为Statement对象赋一个SQL语句

    8. 终止Statement对象

    Conn->terminateStatement(stmt);

    9. 执行SQL语句
    stmt->execute(); 执行所有非特殊声明的SQL语句
    stmt->executeUpdate(); 执行所有DDL和DML(一条记录)的SQL语句
    stmt->executeQurey(); 执行所有查询SQL语句
    stmt->executeArrayUpdate(); 执行多记录的DML的SQL语句

    10. 执行非查询语句

    //准备SQL语句
    stmt->setSQL(string &sql);
    //绑定输入参数值
    stmt->setString(1, 'zhangsan'); 指把zhangsan赋值给第一个参数,参数类型为字符串型
    stmt->setInt(2, 1009); 指把1009赋值给第二个参数,参数类型为整型
    //执行
    stmt->executeUpdate();

    11. 执行查询语句

    //同上
    //执行
    ResultSet *rs = stmt->executeQuery();
    //定义输出变量
    //处理数据
    rs->next(unsignedint numRows); 其中numRows为批量处理的记录行数
    stmt->getInt(paramindex); 获取整型参数值,其中paramindex为参数所在的位置
    stmt->getString(paramindex); 获取字符型参数值其中paramindex为参数所在的位置

    12. 事务提交
    手动提交:

    Connection::commit();
    Connection::rollback();

    自动提交:

    Statement::setAutoCommit(TRUE);

    13. 例子

    #include <iostream>
    #include <occi.h>
    using namespace std;
    using namespace oracle::occi;
    int main()
    {
       Environment *env=Environment::createEnvironment(Environment::DEFAULT);
       cout<<"success"<<endl;
       string name = "scott";
       string pass = "tiger";
       string srvName = "127.0.0.1:1522/orcl";
       try
       {
          Connection *conn = env->createConnection(name, pass, srvName);
          cout<<"conn success"<<endl;
          env->terminateConnection(conn);
       }
       catch(SQLException e)
       {
          cout<<e.what()<<endl;
           return -1;
       }
       Environment::terminateEnvironment(env);
       cout<<"end!"<<endl;
    
       return 0;
    }

    参考文档:
    http://blog.sina.com.cn/s/blog_53a72add01015zj4.html

  • 相关阅读:
    Dubbo简介
    Centos之关机和重启命令
    VirtualBox中CentOS7.2 网络配置(固定IP+联网)
    c#Post方法封装处理
    C# 异步方法处理
    将XMLrequest 改写成fetch
    AsyncCallback
    Promise
    FETCH
    HTML DOM Event 对象
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709905.html
Copyright © 2020-2023  润新知