C++连接出错问题解决 DCI 数据库

最近一直想用C或C++搞个彩色的控制台端的程序,实现对某类信息的管理(无非增删查改),网上DOWN 了个例子,还算不错,但没有连接数据库的部分,干脆就连C对数据库的操作也一起搞了,晚上搜了下,C连接数据库并对数据库进行操作, 一般有如下几种方式

1    ODBC (只针对WINDOWS平台)

2    ADO (只针对WINDOWS平台)

3    PROC C (oracle 提供的底层基于C的封装语言   )

4   OCI  (oracle 提供给C程序的接口库文件,目录一般位于C:\oracle\product\10.2.0\db_2\OCI 目录下,当然由于你的安装目录和我的不同,可能会在你的机器上位于其他目录,在OCI目录下 会有头文件的目录/include 和库文件的目录/lib ,其中针对不同的开发工具,又提供了基于vc和 borland c++开工具的类库,目录名称分为别msvc和bc  。 库文件名称都是oci.lib)

5   OTL(基于OCI 的封装库,OTL是由开源社区里提供的基于多种数据库的开发库,其只有一个头文件和若干例子,只需要引进头文件并设置好OCI的库和头文件的引用即可 运行例子。)

由于是个C++新手,笔者在运行测试例子的过程中出现了不少错误,想的头疼,现总结下,以备后来者乘凉吧,

1   去otl网站下载最新的otl4v.h头文件和例子程序。地址如下:http://otl.sourceforge.net/otl3_down.htm

2   打开VC6.0,新建控制台程序。

3   将步骤1中下载到的头文件导入到工程中,并新建cpp,将连接数据库的代码案例(笔者用的是ex188_oci9.cpp)粘贴到新建的cpp中,然后CTRL+F7编译文件,然后F7组建,然后CTRL+F5运行。

其中第三步中出现的问题较多,列举如下:

1  找不到otl4v.h头文件,因为案例中的代码如下:#include <otlv4.h>  , 因为通过尖括号引用头文件只会在系统级别的目录下寻找,而用双引号引用头文件,则先会在当前目录下寻找,然后在系统级别的目录下寻找 。 解决办法两种:一是修改代码为 :#include “otlv4.h” ,二是引入头文件,TOOL(工具)-->OPTION(选项),在弹出的对话框中,将“目录”的include files添加上otl4v.h的路径即可。

2   编译通过后,BUILD(组建)的时候报了一堆错误。一般代码如下:

mytest1.obj : error LNK2001: unresolved external symbol _OCIHandleFree
mytest1.obj : error LNK2001: unresolved external symbol _OCIServerDetach
mytest1.obj : error LNK2001: unresolved external symbol _OCISessionEnd
mytest1.obj : error LNK2001: unresolved external symbol _OCIBindByName
mytest1.obj : error LNK2001: unresolved external symbol _OCIAttrGet
mytest1.obj : error LNK2001: unresolved external symbol _OCIStmtFetch
mytest1.obj : error LNK2001: unresolved external symbol _OCIInitialize
mytest1.obj : error LNK2001: unresolved external symbol _OCIAttrSet
mytest1.obj : error LNK2001: unresolved external symbol _OCIServerAttach
mytest1.obj : error LNK2001: unresolved external symbol _OCIHandleAlloc
mytest1.obj : error LNK2001: unresolved external symbol _OCIEnvInit
mytest1.obj : error LNK2001: unresolved external symbol _OCISessionBegin
mytest1.obj : error LNK2001: unresolved external symbol _OCIStmtExecute
mytest1.obj : error LNK2001: unresolved external symbol _OCIStmtPrepare
mytest1.obj : error LNK2001: unresolved external symbol _OCIDefineByPos
mytest1.obj : error LNK2001: unresolved external symbol _OCIParamGet
mytest1.obj : error LNK2001: unresolved external symbol _OCIErrorGet
mytest1.obj : error LNK2001: unresolved external symbol _OCIDescriptorFree
mytest1.obj : error LNK2001: unresolved external symbol _OCIDescriptorAlloc
mytest1.obj : error LNK2001: unresolved external symbol _OCITransCommit
mytest1.obj : error LNK2001: unresolved external symbol _OCILobWrite

这其实是在链接的时候,没有找到库文件导致,需要你设置好正确的LIB目录和库文件的名称。两步即可。

  2.1    工程---属性---连接,在对象/库模块中添加上oci.lib库文件。

  2.2     工具---选项---目录 ,在library files 目录下加上 oci.lib库文件的目录,如笔者的目录为:C:\oracle\product\10.2.0\db_2\OCI\lib\MSVC

3   VC6.0 打开环境的错误。

     这也算凑巧遇到的一个问题吧。再关闭项目后,再打开时发现VC崩溃,然后关闭了。

     具体的错误现象和解决办法可以参考我的这个帖子:

    http://blog.csdn.net/dingwood/article/details/7266245

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页