vs 2008 开发环境 oralce occi开发配置

前言:

       这段时间由于一些特殊的原因,突然想学习一下oracle occi程序的开发。毕竟,大部分公司的业务都是围绕着数据库进行的,而oracle又是数据库中的银河战舰。

      oracle基于odbc驱动的的开发已经很成熟,网上也会有很多比较不错的文档。但基于occi开发的文档很少,而且几乎全是英文的,对一些英文不好的同志来说,简直是一种折磨!特别是对于海量数据处理时,occi提供的函数为Oracle数据库的底层函数,在效率方面的优势不言而喻!

       我参考着下面的这篇博客http://kb.cnblogs.com/a/2317158/,简单的做了下配置,并记录下配置的过程。以便自己以后查阅,如果能够给别人提供帮助,哪怕是一点点的帮助,我也会觉得很高兴。

第一部分:准备开发环境

       1> 安装vs 2008

            此部分省略。应该是不会出什么问题的。

       2>安装 oracle数据库

            由于本人只是为了测试代码的方便,只是在自己的笔记本上安装了一个简化版的数据库,而且是最新版本的!

大概300多M,而且是最新的11g。之所以选择11g是要把握时代脉搏,与时俱进

             

            当然,下载的过程中甲骨文公司会要求注册,也许有人会觉得麻烦的,但这确实是值得的。

             解压之后,安装的过程也不再赘述。现在windows下面的软件安装一般都是非常容易的。如果真的有困难的话,请使用google自行解决。

 

第二部分:配置开发环境

            1,配置vs 2008开发环境!

                安装好Oralce之后, 在安装目录(G:\oraclexe\app\oracle\product\11.2.0\server\oci\lib\MSVC\vc9)下,可以看到如下文件:

这就是需要引入的库文件。另外需要引入头文件,本机需要引入的头文件在G:\oraclexe\app\oracle\product\11.2.0\server\oci\include目录下。请读者根据自己的实际情况添加引用头文件。

         vs 2008添加库文件和头文件的方法:菜单->工具->选项....。会弹出如下对话框:

左侧树状结构选择"项目和解决方案"节点,然后选择"c++ 目录"节点。右侧有“显示以下内容的目录”的下拉列表框。可将头文件和库文件分别添加到"包含文件"和"库文件"目录下。

           2,oracle新建表,以供操作。本人比较懒,就在SYSTEM用户下随便建了一张表。具体Sql如下:

            

           建表成功之后。就可以进行数据库的occi代码测试了。

 

第三部分:编码,测试!

          

// OracleTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream"
#include <occi.h>

#pragma comment(lib,"oraocci11.lib")

using namespace oracle::occi;
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	
  try
	{
		const string userName = "SYSTEM";
		const string password = "wxw";
		const string connectString= "//localhost:1521/xe";

		oracle::occi::Environment *env = oracle::occi::Environment::createEnvironment("ZHS16GBK","UTF8");
        
		//建立连接
		Connection *conn = env->createConnection(userName, password, connectString);     

		Statement *stmt = conn->createStatement("select * from userinfo");

		ResultSet *rs = stmt->executeQuery();

		while (rs->next())
		{
			string l1=rs->getString(1);
			string l2=rs->getString(2);
			string l3=rs->getString(3);
			cout <<"用户ID"<<l1<<"  用户姓名:"<<l2<<"  用户地址:"<<l3<<endl;
		} 

		stmt->closeResultSet(rs);

		conn->terminateStatement(stmt);
		//释放连接
		env->terminateConnection(conn);

		oracle::occi::Environment::terminateEnvironment(env);

	}
	catch (SQLException &sqlExcp)
	{
		int i=sqlExcp.getErrorCode();
		string strinfo=sqlExcp.getMessage();
		cout<<strinfo;
	}
    
  int i;
  cin>>i;
  return 0;
}

 注意!如果是按照上面的代码测试,需将vs 2008中dubug改为release模式!

以下为常见错误:来自http://kb.cnblogs.com/a/2317158/

常见错误处理

分享一些在开发和测试的过程中,经常会遇见一些常见的问题(win + VC).

编译代码时,发现大量错误,都是说某些CRT函数名称重复.

原因中多半是同一个项目静态链接了两个不同版本的CRT库.比如VC2005的程序A依赖VC2008的程序B(B使用OCCI),B的代码生成方式为/MT或者/MTd.

将上面的场景中,程序B的代码生成方式改成/MD或者/MDd后,编译通过,但是程序运行发生崩溃.

很可能是代码中的某个对象产生和释放分别调用了不同的CRT(一个是VC2005的,一个是VC2008的).解决办法:没有什么好的解决办法,最好还是统一开发环境吧,C++导出的类不适合跨环境.

出现ORA-24960错误

你的项目是debug版本,但链接了release版本的occi库.

出现R6034错误

OCCI库跟你的VC版本不一致.

调试时,发现堆栈被莫名其妙的破坏

同上,或者OCCI的debug与release版本跟当前项目的设置不匹配.

找不到MSVCR90.DLL

记得让你的客户安装VC9的redist.

找不到MSVCR90D.DLL

你发布的程序是调试版本的,虽然你的用户安装了VC9的redist,那也是没用的,因为redist只会安装release版本的运行时库.

 如果一切正常,您会看到如下界面:

祝您好运!

转载于:https://my.oschina.net/wxwHome/blog/41534

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值