原文地址::https://blog.csdn.net/gaogao303/article/details/17303453
相关文章
1、Linux c/c++访问Oracle数据库--连接数据库----https://blog.csdn.net/gaogao303/article/details/17351513
最近需要在linux下面做数据库的接口,之前对数据库都是空白,经过度娘之后才有所了解。万事开头难,开始吧~~~
/****************/
访问数据库最好的方法应该就是通过现有的客户端了,但是要做成接口所以客户端是不行的了,经过一番搜索之后发现可以利用C通过以下第三方库进行访问数据库的
1)OCI
2)Pro*c
能力有限只找到这两个。这两个都是Oracle 官方给出库。
一、OCI
参考官网给出的相关信息。OCI应该是最底层最基本的调用接口,不过通过其他网友们的反馈,OCI对于我这种初学者来说有点难,不太好上手,所以果断放弃。。~~~这里也就不多说了。
二、Pro*c
同样参考官网的相关信息。网上说这个相对来说比较好学,而且开发效率相对较高一点,学之。
通过proc预编译工具将嵌入的sql语句翻译成C语句,最后使用gcc进行编译链接。在预编译的时候是将嵌入的sql语句翻译成OCI的调用~~~原来Proc是对OCI的另外一种封装~~~
三、配置开发环境
说到开发,就必须要有开发环境,下面就来搭建Pro*c的开发环境吧,这其中又是各种波折啊,不过最大的难题就是找到Proc*C库。
这里有各种Pro*c的库,只有pro*c库还是不行的,我们还需要有oracle的客户端才行,客户端地址,按照个人配置选择适当的链接,转到下载页面之后按照相应的版本下载相应的安装包,不过不用全部都要下载,需要的安装包有:
oracle-instantclient11.2-basic-11.2.0.4.0-1.i386.rpm
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.i386.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.i386.rpm
oracle-instantclient11.2-precomp-11.2.0.4.0-1.i386.rpm
其中的 11.2.0.4.0 是版本号~~按需下载!
首选安装 *-basic*包 其余的没有顺序要求了,全部安装成功就OK了。which proc 看看有没有proc的命令吧!
安装目录:/usr/lib/oracle/11.2/client/
头文件目录:/usr/include/oracle
proc默认的配置文件是在 /usr/lib/oracle/11.2/client/precomp/admin/pcscfg.cfg,但是这样安装之后precomp目录在/usr/lib/oracle/11.2/client/lib 目录下,我们需要cp 出来。另外需要在pcscfg.cfg文件中添加一下两行:
sys_include=/usr/include
sys_include=/usr/include/oracle/11.2/client
不然编译的时候会报找不到头文件的错误! Ok!
下面先测试一下能不能链接我们的数据库吧!
代码如下:保存为:test.pc
#include <stdio.h>
#include <sqlca.h>
#include <oraca.h>
EXEC ORACLE OPTION(ORACA=YES);
int main()
{
char uid[]="test/test@192.168.30.50:1521/rsdb";
EXEC SQL CONNECT :uid;
if (sqlca.sqlcode == 0)
printf("Connect successful!\n");
else
printf("%s\n",sqlca.sqlerrm.sqlerrmc);
return sqlca.sqlcode;
}
编译处理:
1、将.pc文件处理成.c文件,执行成功之后会有一个test.c文件
proc test.pc
2、根据.c文件生成可执行程序
gcc test.c -o test -lclntsh -I/usr/include/oracle/11.2/client/ -L/usr/lib/oracle/11.2/client/lib
3、运行
./test
能打印出
Connect successful!
说明链接成功了,否则会打印链接失败的信息。
至此Pro*c开发环境搭建完成。
(未完待续~~~)
————————————————
版权声明:本文为CSDN博主「菜_鸟_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gaogao303/article/details/17303453