问题描述:
开发环境是VS2005,Oracle客户端是10.2.0
在VS2005下已经把Oracle的include和lib文件引入到工程中,如下:
E:\oracle\product\10.2.0\client_1\oci\include
E:\oracle\product\10.2.0\client_1\oci\lib\msvc
vs工程版本为Release,把oci.dll和oraocci10.dll拷贝到了工程根目录下程序源代码如下:// RWOracle.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>
#include <string>
#include "occi.h"using namespace std;
using namespace oracle::occi;
int _tmain(int argc, _TCHAR* argv[])
{    const string userName = "sa" ;
    const string password = "zxvnms" ;
    const string connectString = "mytest" ;
    Environment *env = Environment::createEnvironment( "ZHS16GBK" ,  "UTF8" );
   try
   {
Connection *conn = env->createConnection(userName, password, connectString);
Statement *stmt = conn->createStatement("select * from t_user");
        ResultSet *rs = stmt->executeQuery();
while(rs->next())
       {           
   cout << "field string is  : " << rs->getString(2) << endl;
        }   }
   catch (SQLException ex)
   {
cout << "SQLException errorinfo is---" <<  ex.getMessage() << endl;
cout << "SqlException errorcode is----" <<  ex.getErrorCode() << endl;

   }
   char * aaa = 0;
   cin >> aaa;
   return 0;
}直接运行时程序崩溃,单步调试到下列代码行时
Environment *env = Environment::createEnvironment( "ZHS16GBK" ,  "UTF8" );
报异常:
RWOracle.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012fdfc 处的 oracle::occi::SQLException。请高手指点,感激不尽!!

解决方案 »

  1.   

    1、我觉得问题不是出在改变字符集上,即使不改变字符集也是报同样的错误
    2、有权限
    怀疑是occi的版本跟vs2005不兼容
    Oracle10.2.0是否支持vs2005?
      

  2.   

    大量实验证明VC6对应支持Oracle9i, VC7对应支持Oracle10g,VC8支持Oracle11g。
    不过好像Oracle11G也能支持VC7。
      

  3.   

    楼主,请教您个问题,我的怎么总是报错误“1error C2653: “Oracle”: 不是类或命名空间名称 ”的错误,对刚刚用vs来做c++项目,得用occi,给点指点吧!
      

  4.   

    我知道了,是因为我机器上没装oracle的原因,早上我装了个客户端,遇到和你一样的问题,期待解决