vs2010访问oracle11g环境配置过程

来源:互联网 发布:榕基软件股吧 编辑:程序博客网 时间:2024/05/17 17:42

看了许多C++访问oracle数据库的方法,感觉OCCI是最简单的一种,代码量少,清晰。下面详细说明一下如何使用vs2010连接oracle11g。


1.建立一个win32应用程序

2.环境配置

(1)添加occi头文件,头文件在安装好的文件夹里面有,当然你也可以去oracle网上下载。具体目录位置(以我的为例):

D:\app\Administrator\product\11.2.0\dbhome_1\OCI,这个文件夹有include和lib两个文件夹,头文件在include下面。

在vs2010台添加办法为在project->project_name option下的C/C++->General->Additional Include Directories下面添加需要的头文件

如图:


(2)添加lib文件。先在linker的general里面添加目录位置,再到input里面添加依赖

如图:


以上就完成了环境的配置


下面是一个最简单的访问过程,你可以把一些DML用类封装起来便于操作。

#include "stdafx.h"
#include <iostream>
#define WIN32COMMON
#include <occi.h>
using namespace oracle::occi;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
Environment *env=Environment::createEnvironment();//创建一个环境,与文后面的terminateEnvironment对应
Connection *conn;
Statement *stmt;
string sql="select ename,job,sal from manager";
cout<<"success-----------"<<endl;
try
{
conn = env->createConnection("admin","chao20080808");
stmt = conn->createStatement();
ResultSet *rs = stmt->executeQuery(sql);
cout<<"connect success"<<endl;
while(rs->next())
{
string l1=rs->getString(1);
string l2=rs->getString(2);
int l3=rs->getInt(3);
cout<<"ename:"<<l1<<","<<"job:"<<l2<<","<<"sal:"<<l3<<endl;
break;
}
stmt->closeResultSet(rs);
conn->terminateStatement(stmt);
}
catch(SQLException e)
{
cout<<e.what()<<endl;
Environment::terminateEnvironment(env);
system("pause");
//return -1;
}


env->terminateConnection(conn);//关闭连接
Environment::terminateEnvironment(env);//关闭环境
cout<<"end--------------------"<<endl;
system("pause");

}

另:另外,这里面有点问题。能连接上数据库,能正确的登陆到数据库,但是用调用ResultSet指针的方法时会出现那个让人头疼的unhandle exception,就是指针错误。但是如果把它用cout批出来可以得到正确的值。目前还未找到原因。

0 0