• --:)欢迎访问锋网源码(:--
  • 首页
  • RSS订阅
  • 常用软件
  • 网页模板
  • 网站运作
  • 锋网学院
  • 繁體中文

  • 学院首页
  • 新闻资讯
  • 网站运营
  • 网站开发
  • 美工设计
  • 数据库类
  • 服务器类
  • 网络应用
  • 操作系统
  • 软件教学
编程开发   认证考试   网络安全   文章搜索: 高级搜索
会员登录/控制面版 您的位置: 学院首页 >> 数据库类 >> 文章内容
 

精彩推荐

 
 

本类推荐文章

  • ACCESS集锦
 
 

本类阅读排行

  • 用SQL实现分布式数据复制
  • 数据库聊天室的“无刷新”技..
  • SQL语言快速入门之一 &..
  • 用Access 2000进行班级管理
  • Delphi中的Access技巧集
  • 浅谈ACCESS数据库升迁SQLSER..
  • 如何更改Access默认的中文输..
  • SQL Server 连接基础知识
  • 检查sql字符串中是否有单引号..
  • 基于WEB的数据库查询
  • ORACLE学习笔记--性能优化
  • ACCESS集锦
  • 能否编译mdb文件到exe文件?
  • ado如何使用sql函数?
  • 建立Access 数据库的安全门
  • Oracle数据库维护常用SQL语句..
  • Oracle数据库维护常用SQL语句..
  • 在 Access 中使用“存储过程..
  • Access 的最大容量
  • Vista下安装SQL Server 2005..
 
 

Oracle 9i中OCCI在VC6下不能DEBUG的问题

  • 日期:2008-08-12     人气:     出处:     作者:
  • 字体大小:
  • 小
  • 中
  • 大

问题:OCCI在VC6下不能debug:

winXP VC6-sp6 oracle9.2


是不是OCCI的库有 开发版和发行版 之分,所以用发行版的oraocci9.lib不能做debug版的程序,string或者vector在释放时总会报错


Statement类的setXXX()函数为什么我在使用的时候不管用呢?


文档说NUMBER类型也可以和string转换

在

while(rs->next())

{

for(i=0; i{

cout <getString(i+1) <<'\t';

}

cout <}

这个程序段中,为什么第一行中的NUMBE类型都正常的读出了,但是从第二行开始就不正确了呢

如果我在while()前先next()几次,仍然是当前循环中的第一行的所有的number类型都正常读出,从第二行开始就又不正常了

解决方法如下:

vc6的那个默认的步骤debug肯定行不通。因为OCCI不按这种配置来compile.

步骤如下:

1. 确保oci.lib, oraocci9.lib在你的lib路径下边,确保oci/include在你的include路径下边

2. 确保有下边的宏声明:(#define WIN32COMMON)

#ifdef WIN32COMMON

template

void getVector( ResultSet *rs, unsigned int index,

OCCI_STD_NAMESPACE::vector< T > &vect) ;

#else

template

void getVector( ResultSet *rs, unsigned int index,

OCCI_STD_NAMESPACE::vector< T* > &vect) ;

#endif


3.这一步最重要,要与VC6的默认配置相区别:

在project settings的WIN32 DEBUG的"link"下边,将Category: Input下边的

Object/library modules:

改为kernel32.lib user32.lib oci.lib msvcrt.lib msvcprt.lib oraocci9.lib (顺序不能错)

同时,勾上Ignore all default libraries,

并在Ignore libraries上边填上边libc.lib

这要build出来以来,执行是不会出现堆错误的。并且可以debug。

使用occi与其它库进行集成时,尤其要注意这些配置,有的时候甚至出现不相容的情况。所以要根据实际情况进行选择。


当然,你可以使用MTD, MD方式来build。

到了VC7以后,OCCI相应的要求就少多了。

linux下当初OCCI是有很多bug的,除非打了9205及以后的补丁,不然,你几乎无法正常使用。

如果有再碰到类似问题,请及时回馈。


附加注释:


可以看看$ORACLE_HOME\oci\samples下的make.bat中对应于OCCI的相关内容:

:occimakeobj

ott userid=scott/tiger intype=%1.typ outtype=%1out.type code=cpp hfile=%1h.h cppfile=%1o.cpp mapfile=%1m.cpp attraccess=private


cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp %1m.cpp %1o.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc

goto end


:occimake

cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc

goto end


至于为什么要/nod:libc,为什么要将msvcrt.lib msvcprt.lib 放到中间,那是因为oracle的occi库在build时依赖顺序不一样。你可以上msdn上查查msvcrt.lib和msvcprt.lib是干嘛用的。

在侯捷的win32多线程编程里也有相关描述。

相关文章
  • Oracle 10g实用程序trcsess:跟踪sql语句
  • Oracle 数据库唯一约束中的NULL的处理
  • Oracle Developer 2000中的一些实用语句
  • Oracle 10g DBMS_SCHEDULER的中度解析
  • Oracle 10g手工创建数据库个人经验
  • Oracle 10G里手工建库的全过程
  • Oracle listener静态注册和动态注册总结
  • Oracle 10g使用RMAN创建physical standby
  • Oracle DBMS_JOB:每隔特定时间执行特定任务
  • Oracle 2008年7月紧急补丁更新修复多个漏洞
相关软件

  • 网友评论:
  • 查看所有评论
  • 我要发表评论
 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 加入收藏 | 帮助中心 |

Copyright © 2006-2007 fwvv.net  程序支持:木翼  皖ICP备06004916号