您的位置:首页 > 编程语言 > C语言/C++

vc++ 使用otl连接数据库苦逼的经历

2012-02-16 23:43 886 查看
最近一直想用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崩溃,然后关闭了。

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

/article/8471626.html

当然ADO的例子也会尽快贴出去跟大家分享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: