DM API和OCI编程方式比较
2008-09-03 12:50:56 来源:WEB开发网b) OCI
OCI的参数绑定动作需要使用OCIBindByPos或OCIBindByName函数协同OCIBindArrayOfStruct函数来完成,并且绑定动作必需放在准备语句和执行语句之间进行。在OCI中,为了兼容ORACLE的语法,SQL语句中的参数是以冒号开头的,冒号后面跟一个名字用来表示参数的名称,所以,OCI绑定参数时即可以按参数位置绑定(OCIBindByPos),也可以按参数名来绑定(OCIBindByName),OCIBindArrayOfStruct函数是用来指定在多行参数绑定时,每个参数跟下一个参数的偏移量。具体有解释可以参考OCI手册。下面列举OCIBindByPos的参数:
sword OCIBindByName (OCIStmt *stmtp, /*语句句柄*/
OCIBind **bindp, /*输出的绑定结构句柄*/
OCIError *errhp,/*错误信息句柄*/
CONST OraText *placeholder, /*参数的名称*/
sb4 placeh_len, /*参数名称的长度*/
dvoid *valuep, /*参数值的缓冲区指针*/
sb4 value_sz, /*单个值的长度*/
ub2 dty, /*参数的OCI数据类型*/
dvoid *indp, /*参数值的指示符*/
ub2 *alenp, /*下面都是保留参数*/
ub2 *rcodep,
ub4 maxarr_len,
ub4 *curelep,
ub4 mode)
对应上面API的实现,OCI的代码应该如下:
intc1;
charc2[100];
text*sqlstmt=(text*)"insertintot(c1,c2)values(?,?)";
//在绑定前先要准备语句
OCIStmtPrepare(stmthp,errhp,sqlstmt,(ub4)strlen((char*)sqlstmt),
(ub4)OCI_NTV_SYNTAX,(ub4)OCI_DEFAULT);
//绑定:c1参数
OCIBindByName(stmtp,NULL,errhp,“:c1”,3,&c1,4,SQLT_INT,NULL,NULL,NULL,0,NULL,0);
//绑定:c2参数
OCIBindByName(stmtp,NULL,errhp,“:c2”,3,&c2,100,SQLT_AFC,NULL,NULL,NULL,0,NULL,0);
//下面对要插入的参数赋值
c1=1;
len1=4;//值c1的大小,按字节计算
memset(c2,‘a’,100);
len2=100;//参数c2的大小,按字节计算
//执行带参数的语句,执行完成以后1和’aaa..’就会被插入到表t的c1和c2字段中
OCIStmtExecute(svchp,stmthp,errhp,(ub4)1,(ub4)0,(CONSTOCISnapshot*)0,(OCISnapshot*)0,(ub4)OCI_DEFAULT);
- ››DM API和OCI编程方式比较
- ››API之菜单函数
- ››API之控件与消息函数
- ››API之进程和线程函数
- ››API之打印函数
- ››API之位图、图标和光栅运算函数
- ››API之网络函数
- ››API之设备场景函数
- ››API之消息函数
- ››API之文本和字体函数
- ››API文件产生器-javadoc.exe
- ››API解读:Thread
更多精彩
赞助商链接