基于OCCI访问Oracle的记录
来源:互联网 发布:宽带网络价格 编辑:程序博客网 时间:2024/05/02 22:00
我在oracle 9i的环境下开发了occi的应用,结果放到10g(10.2.0.3)服务器上运行不了(只装了windows 版的10g服务端),只好把所有依赖的9i的dll拷过去,结果连接occi报错:
Error while trying to retrieve text for error ORA-32101
到http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html下载一个即时客户端10g(10.2.0.3)
安装并设置instantclient(解压缩到C盘,设置path和TMS_ADMIN等环境变量),还是ORA-32101错误(而且导致原来其他基于ODBC访问oracle的应用也会报错了:internal error -
unable to initialize NLS during driver load.)
Google之,说要设置环境变量,添加ORACLE_HOME=c:/oracle/product/10.1.0/em_1,报错改变:ORA-12538: TNS:no such protocol adapter
再Google之,有高人提到:
10g的occi库对应不同的vc有不同的库文件(在http://www.oracle.com/technology/tech/oci/occi/occidownloads.html可下载vc8的库,在instantclient sdk包里有vc7,vc71的
库,oracle服务端安装后也有默认的oci的库),但我下在的10g(10.2.0.3) instantclient里面只有vc7,vc71的库,就是没有vc6的!!
如果直接用oracle 10g(10.2.0.3)服务端自带的occi库(在C:/oracle/product/10.1.0/db_1/OCI/lib/MSVC/),结果运行时
try{
env = Environment::createEnvironment (Environment::DEFAULT);
conn = env->createConnection (user, passwd, db);
}catch(SQLException ex)
{
errS = (ex.getMessage()).c_str();
errCode = ex.getErrorCode();
}
运行到这一句errS = ex.getMessage();会异常!这应该是由于10g occi用的string和vc6 的 string不兼容造成的。
改成errS = ex.getMessage().c_str();后可以看见获得的错误描述:
ORA-24960: 属性 OCI_ATTR_USERNAME 的长度大于最大允许长度 255
后来才发现10.1.0.5版本的10g的instantclient sdk才有支持vc6的库(10.2.0.3以后就没有了),用这个替换10.2.0.3的库,编译完成,再将instantclient里面的oci.dll及vc6
下面的oraocci10.dll放到执行文件的旁边,拷到10g服务器上运行OK(注意这时在9i上运行反而会异常的,应该是调用到9i的dll导致)。
解决方案二:
改用VS2003+10.2.0.3的库进行编译,也可以在10g(10.2.0.3) 服务器的电脑上运行,注意这时不要在10g上面再安装9i的客户端程序,要不然会有oci.dll的函数定位错误。
- 基于OCCI访问Oracle的记录
- VS2010下访问oracle数据库的OCCI配置
- VS2010下访问oracle数据库的OCCI配置
- 关于VS 使用 OCCI 连接Oracle 数据库的问题记录
- 使用OCCI访问Oracle数据库(1)
- 使用OCCI访问Oracle数据库(2)
- 使用OCCI访问Oracle数据库(3)
- 使用OCCI访问Oracle数据库(4)
- occi编程遇到的问题:oracle::occi::Environment * __cdecl oracle::occi::Environment::createEnvironmenT
- Oracle的C++调用接口(OCCI)
- Windows以及Linux下用OCCI访问Oracle数据库
- C++使用oracle的occi库操作oracle数据库
- C++使用oracle的occi库操作oracle数据库
- C++使用oracle的occi库操作oracle数据库
- 基于OCCI的空间数据库几何对象实现方法研究
- Oracle oci/occi
- 入门:ORACLE OCCI配置
- OCCI 连Oracle
- RoR之字符编码问题
- SQL Server数据类型介绍
- sqlserver中批量修改对象所有者
- 失败的教育制度 根结所在: 高校行政化,一帮不懂教育的人搞教育。教师是弱势群体,在学校权利和资源不由他们分配
- oracle命令1
- 基于OCCI访问Oracle的记录
- AO
- JAVA小例子解析算法效率
- C/C++中有关字长与平台无关的整数类型
- Ubuntu Softwares
- Can you feel my word?
- 同学会后离婚观念的罪魁是什么?
- dd用法
- OpenCore学习笔记(1)