- 论坛徽章:
- 0
|
请教关于OCI编程问题
我刚开始接触OCI方面的内容,是在linux下,用C编程,操作ORACLE库,我试着安照资料的介绍编写的一点试验程序,编译通不过。我主要是完成用oci来操纵oralce数据库,能方便的操纵数据库里面的表,如select,insert,update等。请帮我列一下所用的函数和详细使用方法,以及需要的库文件等知识,若有源文件,那是最好不过了,本人十二万分的感谢
我练习用OCI编程如下:oci_login1.c
/*OCI与ORACLE进行连接*/
#include <stdio.h>;
#include <string.h>;
#include <ocidfn.h>;
#include <oci.h>;
#include <ociapr.h>;
#include <oratypes.h>;
#include <ocidem.h>;
/*建立登录数据区*/
Lda_Def lda; /*LDA_DEF lda;*/
/*建立宿主数据区*/
ub1 hda[256];
/*建立光标数据区*/
Cda_Def cda; /*CDA_DEF cda; cda_def cda;*/
/*初始化数据库名和口令*/
text *uid="dbtest/dbtest";
/*定义一个串变量sql语句,并用PL/SQL块来初始化它*/
char sql_statament[]="select * from jq;";
main()
{
/*连接数据库*/
//if (orlon(&lda,&hda,uid,-1,(text*)0,-1,0))
if (olon(&lda,"dbtest/dbtest",-1,0,-1,0))
{ /*连接失败*/
//error_handler(&lda);
printf("Cannot connect to ORACLE as dbtest/dbtest\n" ;
//exit(EXIT_FAILURE);
exit(1);
}
/*打开光标*/
if (oopen(&lda,&cda,0,-1,-1,0,-1))
{ /*打开光标失败 */
printf("Cannot open cursor, exiting......\n" ;
ologof(&lda);
exit(1);
}
/*分析SQL语句*/
if (oparse(&cda,sql_statament,-1,1,1))
oci_error(); /*分析SQL失败*/
/*执行PL/SQL块*/
if (oexec(&cda))
oci_error();
/*关闭光标*/
if (oclose(&cda))
exit(1);
/*结束处理,退出ORACLE*/
if (ologof(&lda))
exit(1);
exit(0);
}
编译:gcc -o oci oci_login1.c -I/opt/oracle/product/9.2.0/rdbms/demo -I /opt/oracle/product/9.2.0/rdbms/public/
出现错误
/tmp/ccxeEYyW.o: In function `main':
/tmp/ccxeEYyW.o(.text+0x1c): undefined reference to `olon'
/tmp/ccxeEYyW.o(.text+0x5c): undefined reference to `oopen'
/tmp/ccxeEYyW.o(.text+0x82): undefined reference to `ologof'
/tmp/ccxeEYyW.o(.text+0xa : undefined reference to `oparse'
/tmp/ccxeEYyW.o(.text+0xb6): undefined reference to `oci_error'
/tmp/ccxeEYyW.o(.text+0xc3): undefined reference to `oexec'
/tmp/ccxeEYyW.o(.text+0xd1): undefined reference to `oci_error'
/tmp/ccxeEYyW.o(.text+0xde): undefined reference to `oclose'
/tmp/ccxeEYyW.o(.text+0x101): undefined reference to `ologof'
collect2: ld returned 1 exit status
我用此法编译demo下的cdemo1.c,出现类似的问题。好像我的编译不正确,我非常急用,恳请能尽快给予帮助!多谢! |
|