本人允许自由散发此文档,但对其进行的任何修改应通知作者,以便于维护版本。
原作:卡卡西 日期:2009年12月25日 注意事项:在转载本技术文章时请保护作者的署名权、著作权及专属权。谢谢!
这段自学 OCI 编程,感觉网上这方面的资料其实也不少,只是不是很容易找到。其实 OCI 没有想象的那么复杂,如果你想深究,那应该就只是时间问题。我在网上看到有人这么写到,对于 C++ 高手来说 OCI 编程只是简单的调用接口函数而已。我个人认为,学习 OCI 编程真的没那么难的,如果你想简单的会使用。
那么接下来我就这段时间对 OCI 函数的学习及所收集的资料进行整合,用于帮助那些刚刚接触 OCI 编程的程序员,及 OCI 编程专家做以讨论及研究。当然以下贴出的程序虽然都已经在 x86_64-redhat-linux 系统, GCC 版本 4.1.1 20070105 (Red Hat 4.1.1-52) 下通过编译, OCI 每个函数的参数都有严格的类型定义,比较繁琐,下面的函数示例为了简洁说明,没有对错误进行处理,在实际应用中是应该注意的。 但有些个人结论并非正确,还请大家自己进行测验,得出正确结果后希望给予指正,在下不胜感激。
一、理论:
在这里不废话的解释什么是 OCI 及 OCI 简介。不过值得一提的是 OCI 程序的编译,下边就先对 OCI 程序怎么编译,编译过程中出现的问题做出详细解释。
1 、在此只说 UNIX/LINUX 下 OCI 编程的配置。
在 UNIX 下编译 OCI 程序需要 3 个必要条件:
(1) 需要 oci.h 文件的所在目录。一般为 ORACLE 的安装目录: /…/10.2.0/db_1/rdbms/public/ 。
(2) OCI 的静态链接库文件。静态库文件在我这是在用户目录下有个 lib 文件夹静态文件名为 ora.a ,其目录是: /user/lib 。
这个静态文件的生产方式是用户目录下有个 OCI 文件夹,目录为: /user/oci ,是 ORACLE 的应用程序,直接 make 就可以生产该静态库了。 -- 有待考核
(3) 在编译时需要再加几个静态库 -lclntsh -lm –lnsl 我想这几个应该是 ORACLE 数据库运行 OCI 程序的驱动库文件吧。如果不加则会提示你程序中所有 OCI 函数找不到其定义。另外还需要加这些库文件的所在地址。
(4) 另附 makefile 文件