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

要在 Visual Studio 中添加达梦数据库(DMDB)的 DCI(Database Connectivity Interface)驱动,可以按照以下步骤进行操作: 1. 首先,确保已经安装了达梦数据库系统,并且拥有 DCI 驱动的安装文件。 2. 打开 Visual Studio 项目。 3. 在“解决方案资源管理器”窗口中,右键单击你的项目,并选择“属性”选项。 4. 在项目属性对话框中,选择“配置属性” > “C/C++” > “常规”。 5. 在右侧的选项中,找到“附加包含目录”(Additional Include Directories)选项,并添加包含 DCI 头文件的目录路径。这将告诉编译器在编译时搜索 DCI 头文件的位置。 6. 在“配置属性” > “链接器” > “常规”中,找到“附加库目录”(Additional Library Directories)选项,并添加包含 DCI 库文件的目录路径。这将告诉链接器在链接时搜索 DCI 库文件的位置。 7. 在“配置属性” > “链接器” > “输入”中,找到“附加依赖项”(Additional Dependencies)选项,并添加 DCI 驱动的库文件名。例如,如果驱动库文件名为 dci.lib,则输入“dci.lib”。这将告诉链接器在链接时使用指定的 DCI 驱动库。 完成上述步骤后,Visual Studio 将能够正确地编译和链接使用达梦数据库的代码,并在运行时加载和使用所需的 DCI 驱动。 需要注意的是,添加 DCI 驱动时,请确保驱动文件实际存在于指定的目录中,并且与你的项目兼容。另外,还需要根据具体的达梦数据库DCI 驱动的要求进行其他配置和操作。 希望对你有所帮助!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值