利用oracle官网提供的occi库在windows下操作oracle数据库

ps:什么事情,单反经历才能使你变得强大,问题没有解决千万克制,不要砸电脑哦.O(∩_∩)O

碰到各种头文件找不到情况下,如果其它方法还没用.为什么不试试问下神奇的海螺呢.

配置如下:(进行如下方法配置)
工具-》选项-》项目和解决方案-》vc++目录,在右边出现的组合框中选择“包含文件”,把你的oci目录包含进来。例如我的是:D:/oracle/product/10.2.0/db_1/OCI/include。完了之后,配置库目录,仍然是在组合框选择库文件,然后输入你的库文件目录,例如我的是:D:/oracle/product/10.2.0/db_1/OCI/lib/MSVC。
选择项目属性-》配置属性-》连接器-》输入,在附加依赖项中添入oraocci10.lib。配置完毕。


<经过本人实践,像下面所说的dll,lib,h文件,我在安装oracle10g的时候貌似已经有了,可以自行搜索目录,若有课不必下载.>

如果,运行时抛出:"监听程序无法识别连接描述符中请求的服务"的异常,则自行百度解决.

-------------------------------------------------------分割线---------------------------------------------------------------

原文链接:http://blog.csdn.net/abqchina/article/details/53633760

1、先前用occi操作Oracle数据库都是失败,后来发现是我下载的库版本和对应的dll版本不一致导致:如32库, 却下载了64位的dll,因此导致在初始化环境就失败,百思不得其解。

2、在下载好对应的32位库和32位dll,可以正常初始化环境,操作oracle数据库。

3、只需下载2个文件,其他版本的文件根据自己需要下载。如我下载的是:instantclient-basic-nt-11.2.0.3.0.zip 和 instantclient-sdk-nt-11.2.0.4.0.zip

4、我下载的文件只支持vs2005和vs2008

5、发现运行正常,无需在安装或配置oracle数据库驱动等。

6、运行时依赖的库有:针对我这次运行例子:oci.dll、oraocci11.dll、oraociei11.dll

7、dll可以在instantclient-basic-nt-11.2.0.3.0.zip 找到,

8、程序依赖的头文件、库文件可以在instantclient-sdk-nt-11.2.0.4.0.zip找到

9、依赖的头文件位于instantclient-sdk-nt-11.2.0.4.0.zip文件夹中的include文件夹

10、依赖的库文件位于instantclient-sdk-nt-11.2.0.4.0.zip文件夹中的msvc文件夹,只用2个库文件:oci.lib 和 oraocci11.lib

附上测试代码:


[cpp]  view plain  copy
  1. #include <iostream>  
  2. #define WIN32COMMON //避免函数重定义错误  
  3. #include <occi.h>  
  4. using namespace std;  
  5. using namespace oracle::occi;  
  6.   
  7.   
  8. int main()  
  9. {  
  10.     //创建OCCI上下文环境  
  11.     Environment *env = Environment::createEnvironment();  
  12.     if (NULL == env) {    
  13.             printf("createEnvironment error.\n");    
  14.             return -1;    
  15.         }  
  16.     else  
  17.         cout << "success" << endl;  
  18.   
  19.     string name = "用户名";  
  20.     string pass = "密码";  
  21.     string srvName = "数据库地址/数据库名";//数据库地址与数据库名之间用“/”分隔  例如:localhost/orcl
  22.   
  23.     try  
  24.     {     
  25.         //创建数据库连接  
  26.         Connection *conn = env->createConnection(name, pass, srvName);//用户名,密码,数据库名  
  27.          if(NULL == conn) {    
  28.                  printf("createConnection error.\n");    
  29.                  return -1;    
  30.                 }  
  31.         else{      
[cpp]  view plain  copy
  1.               cout << "conn success" << endl; 

  2.               }   
  3.   
  4.           //关闭连接  
  5.       env->terminateConnection(conn);            
  6.     }  
  7.     catch (SQLException e)  
  8.        {  
  9.         cout << e.what() << endl;  
  10.         system("pause");  
  11.         return -1;  
  12.     }  
  13.   
  14.   
  15.        // 释放OCCI上下文环境    
  16.     Environment::terminateEnvironment(env);  
  17.     cout << "end!" << endl;  
  18.     system("pause");  
  19.     return 0;  
  20. }

  21.      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值