本站关键字:网站建设、上海网站建设、网站推广、网页制作
网站首页关于我们网站建设网站推广电子商务联系我们
 
Solaris下PRO*C和OCI程序设计分析与比较3
2.3生成可执行文件
在Solaris平台下可通过命令方式对PRO*C源程序进行预编译,下列命令只列出了最常用的预编译选项:#proc iname=example.c INCLUDE=path CODE=ANSI_C MODE=ANSI CPP_SUFFIX=cc
SQLCHECK=SEMANTICS USERID=username/password@DBname
预编译后的example.cc文件就可以当作普通的C源文件来进行处理了。
#gcc -o exampled –I. -I/oracle/product/8.1.7/precomp/public example.cc
最终生成的exampled文件就是我们的可执行文件。
3 OCI程序设计
OCI(Oracle Call Interface)是由头文件和库函数等组成的一套Oracle数据库应用程序编程接口工具,OCI程序实质上就是用高级语言写的程序,其特点是内部含有对OCI子函数库的调用。
OCI程序对开发环境的要求相对较低,只要有C语言的OCI开发工具包和C编译器就可以,程序设计相比PRO*C复杂了点。
3.1创建和初始化OCI环境
首先要在源程序中包含OCI头文件:#include <oci.h>
OCI环境即OCI函数的工作环境,在调用其他函数之前必须先调用OCIInitialize()和OCIEnvInit()函数创建和初始化OCI环境,其他OCI函数要在这个环境中才能执行。
先定义变量:OCIEnv **m_envhp;
OCIError *m_errhp;
OCIServer *m_srvhp;
OCISvcCtx *m_svchp;
OCIStmt *m_stmthp;
OCIInitialize((ub4) OCI_DEFAULT, (dvoid *)0, (dvoid * (*)(dvoid *, size_t)) 0,
(dvoid * (*)(dvoid *, dvoid *, size_t))0, (void (*)(dvoid *, dvoid *)) 0 );
OCIEnvInit((OCIEnv **)&m_envhp, OCI_DEFAULT, (size_t) 0, (dvoid **) 0 );
其中m_envhp为输出参数,是一个指向OCI环境句柄的指针,OCI_DEFAULT 是OCI环境的初始化模式。OCIEnvInit()函数中的size_t类型变量为分配给用户的内存数量,dvoid **类型变量指向用户的内存区域,该区域的大小等于size_t类型变量。
OCI函数中,大量使用OCI定义的数据类型和宏,其定义可参考$ORACLE_HOME/rdbms/demo目录下的oci.h头文件。
3.2申请句柄
句柄是指向OCI库所分配的内存区域的指针,该内存区域中的数据由OCI库维护,应用程序可通过句柄访问其中的数据。下面是应用程序中最常用的几个句柄:
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_errhp, OCI_HTYPE_ERROR,
(size_t) 0, (dvoid **) 0);
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_srvhp, OCI_HTYPE_SERVER,
(size_t) 0, (dvoid **) 0);
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_svchp, OCI_HTYPE_SVCCTX,
(size_t) 0, (dvoid **) 0);
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_stmthp, OCI_HTYPE_STMT,
(size_t) 0, (dvoid **)0);
其中m_errhp为新申请的句柄,m_envhp为它的父环境句柄,OCI_HTYPE_ERROR为句柄类型,表示这是一个错误报告句柄,OCI_HTYPE_SERVER表示服务器句柄,OCI_HTYPE_SVCCTX表示服务环境句柄,OCI_HTYPE_STMT表示语句句柄。
存储在句柄中的数据称为句柄属性,所有OCI句柄都具有属性,可以调用OCIAttrGet()和OCIAttrSet()函数来读取、设置句柄属性。
Google搜索从入门到精通v4.0(6)
动态网页技术介绍—ASP、JSP、CGI、PHP(3)
提高网站在Google中的排名
Solaris下PRO*C和OCI程序设计分析与比较3
Google补充材料深入观察
博客中h1 h2 h3和strong的用法
“CN域名1元体验活动”延续至2007年12月31日
行业域名、虚拟货币 2006互联网4大关键词出炉
eBay谋划在华业务各自独立 贝宝与Tom换股合作
每日搜索评论3--沉痛悼念著名搜索引擎Northernlight
动态网页怎样才能被搜索引擎收录?
国内ASP缘何昙花一现
初学web标准的几个误区
典型的三行二列居中高度自适应布局
《商业2.0》评最佳非美国Web2.0 中国3家入选(2)
沪ICP备 05020775号    联系电话:021-51872701 51302668 51302669 上海网络信息科技有限公司 版权所有