测试程序我放到 http://download.csdn.net/detail/u011311985/9499596这个地址中了,有需要的朋友可以下载
一、下载客户端驱动说明
参考网址:
使用ocilib;http://www.cnblogs.com/ychellboy/archive/2010/04/16/1713884.html
二、测试程序说明
我的系统是32位,用的Unicode编码
这些文件在下载客户端驱动之后都有(我已经放到我的ocilib目录中和debug目录中了)
访问oracle数据库需要3个dll文件:oci.dll、ociliba.dll、oraociei11.dll放到和运行程序同一个目录下(比如Debug下)
还要添加环境变量:NLS_LANG 值为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK(不然的话向数据库插入中文会是乱码)
我建了ocilib目录
ocilib目录中有两个子目录,分别是include和lib32
include中有ocilib.h ocilib.hpp ocilib_core.hpp ocilib_impl.hpp
lib32中有libocilib.a、libocilibw.a、ociliba.dll、ociliba.lib、ocilibw.dll、
VS2013属性配置:
字符集:Unicode字符集
(工程|属性|调试)环境:path=..\ocilib\lib32
(工程|属性|C/C++|常规)附加包含目录:..\ocilib\include
(工程|属性|连接器)附加库目录:..\ocilib\lib32
程序中还有
#pragma comment(lib, "..\\ocilib\\lib32\\ociliba.lib")
包含头文件
#include "ocilib.hpp"
初始化操作
Environment::Initialize(Environment::Default,"oci.dll和oraociei11.dll的目录");//第二个参数就是上述lib目录
三、程序展示
#include
#include
#include
#include "ocilib.hpp"
#pragma comment(lib, "..\\ocilib\\lib32\\ociliba.lib")
int main()
{
using namespace ocilib;
using namespace std;
//当前程序路径
string szlibpath = "E:\\shuaizy\\Trunk\\oracletest\\Debug";
try
{
Environment::Initialize(Environment::Default, szlibpath);
Connection con("192.168.2.201/orcl", "test", "qiantangjiang");//实例、用户名、密码
Statement st(con);
st.Execute("select * from all_users order by user_id");
Resultset rs = st.GetResultset();
while (rs++)
{
std::cout << std::setw(30) << std::left << rs.Get("username")
<< std::setw(10) << std::right << rs.Get("user_id")
<< std::setw(20) << std::right << rs.Get("created") << std::endl;
}
//std::cout << "=> Total fetched rows : " << rs.GetCount() << std::endl;
cout << "执行语句:\r\nselect * from all_users order by user_id\r\n查询到 "
<< rs.GetCount() << " 条数据" << endl;
}
catch (std::exception &ex)
{
std::cout << ex.what() << std::endl;
}
Environment::Cleanup();
return 0;
}