( CSDN格式不友好,同样的内容请参考:简书 )
一、安装配置
1、从vrogier.github.io下载最新的ocilib文件,将include和lib文件夹放到项目目录下,将dll拷贝到项目运行目录下。
2、在项目中添加头文件和lib
#include "ocilib.hpp"
#ifdef _WIN64
#pragma comment(lib,"ocilib/lib64/ociliba.lib")
#else
#pragma comment(lib,"ocilib/lib32/ociliba.lib")
#endif // _WIN64
using namespace ocilib;
###3、ocilib是可以在没有安装oracle客户端的机器中运行的,但是需要带上oracle客户端中的两个文件oci.dll
和oraociei11.dll
,并在环境初始化时指定这两个文件的目录,即Initialize()的第二个参数。
Environment::Initialize(Environment::Default,ociDllPath);
//ociDllPath 为 oci.dll和oraociei11.dll的目录
4、官方提供了C API和C++ API两种方式,参看文档介绍:
* OCILIB ++是基于C OCILIB API构建的一种用于Oracle的C ++ API
* 全部的C API移植到C++
* (实现为一小组头文件,不需要库编译
* 基于C ++和STL范例(强类型,模板,容器,RAII,异常处理,运算符,堆栈对象)
* 基于设计模式(RAII,授权,引用计数,智能指针,代理,单例)
* 不需要用户动态对象分配
* 唯一的依赖是:STL和OCILIB C API
* OCILIB C API调用中发生的任何故障将抛出ocilib ::异常.由于一致性原因,此类派生自std :: Exception
* 每个C OCILIB对象句柄都有其C ++类计数器部分
* 整个OCILIB C文档(概念,用例,功能和功能)对OCILIB ++仍然有效
5、简单demo(这里只展示C++版本的,C版本的请参看文档):
C++版本:
#include "ocilib.hpp"
using namespace ocilib;
int main(void)
{
try
{
Environment::Initialize();
Connection con("db", "usr", "pwd");
Statement st(con);
st.Execute("select intcol, strcol from table");
Resultset rs = st.GetResultset();
while (rs.Next())
{
std::cout << rs.Get<int>(1) << " - " << rs.Get<ostring>(2) << std::endl;
}
}
catch(std::exception &ex)
{
std::cout << ex.what() << std::endl;
}
Environment::Cleanup();
return EXIT_SUCCESS;
}