C语言打开Oracle数据库

2025-11-19 07:56:07

1、简述:用C语言连接ORACLE数据库。有两个思路和目的

C语言打开Oracle数据库

2、思路一)本地环境:UBUNTU 7.04,ORACLE 10G目的:用C语连接本地数据库sid:umail,ip:127.0.0.1,用户名:umail,密码:umail,表tt1.显示表tt1的所有记录.

思路二)远程环境服务器1:linux es3远程数据库:oracle9i目的:在远程一台服务器上,再远程连接数据库,用户名和表同上显示表tt1的所有记录.

C语言打开Oracle数据库

3、 查看/etc/profile文件

export ORACLE_BASE=/share/oracleexport ORACLE_HOME=$ORACLE_BASE/product/10.2.1export ORACLE_SID=umailexport PATH=$PATH:$HOME/bin:$ORACLE_HOME/binexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:$LD_LIBRARY_PATHexport JAVA_HOME=/share/jdkexport AWT_TOOLKIT=MToolkit作用:解决tnsnames.ora问题

C语言打开Oracle数据库

4、更改$ORACLE_HOME/precomp/admin/pcscfg.cfgsys_include=(/usr/include,/usr/lib/gcc/i486-linux-gnu/4.1.2/include,/usr/lib/gcc/i486-linux-gnu/3.4.6/include,/share/oracle/product/10.2.1/precomp/public,/usr/include/sys)include=(/share/oracle/product/10.2.1/precomp/public)include=/share/oracle/product/10.2.1/precomp/hdrsinclude=/share/oracle/product/10.2.1/tpcc2x_2/srcinclude=/share/oracle/product/10.2.1/precomp/precomp/includeinclude=/share/oracle/product/10.2.1/precomp/oracore/includeinclude=/share/oracle/product/10.2.1/precomp/oracore/publicinclude=/share/oracle/product/10.2.1/precomp/rdbms/includeinclude=/share/oracle/product/10.2.1/precomp/rdbms/publicinclude=/share/oracle/product/10.2.1/precomp/rdbms/demoinclude=/share/oracle/product/10.2.1/precomp/nlsrtl/includeinclude=/share/oracle/product/10.2.1/precomp/nlsrtl/publicinclude=/share/oracle/product/10.2.1/precomp/network_src/includeinclude=/share/oracle/product/10.2.1/precomp/network_src/publicinclude=/share/oracle/product/10.2.1/precomp/network/includeinclude=/share/oracle/product/10.2.1/precomp/network/publicinclude=/share/oracle/product/10.2.1/precomp/plsql/publicltype=short

C语言打开Oracle数据库

5、新test.pc文件,如下:

#include <stdio.h>

EXEC SQL INCLUDE SQLCA;

int main(){     //声明SQL变量     EXEC SQL BEGIN DECLARE SECTION;     VARCHAR user[20],pass[20],tnsname[20];     //VARCHAR预编译后为struct { unsigned short len; unsigned char arr[20];}     char ename[20];     int empno;     EXEC SQL END DECLARE SECTION;          //声明C变量     int i=0;          //变量赋值     strcpy(user.arr,"umail");     user.len=(unsigned short)strlen((char *)user.arr);     strcpy(pass.arr,"umail");     pass.len=(unsigned short)strlen((char *)pass.arr);     strcpy(tnsname.arr,"umail");     tnsname.len=(unsigned short)strlen((char *)tnsname.arr);          //连接数据库     EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;

     EXEC SQL declare emp_cursor cursor for                                          select id,ename from umail.tt1;

                                        EXEC SQL open emp_cursor;

     EXEC SQL WHENEVER NOT FOUND DO break;

     while(1)     {           EXEC SQL fetch emp_cursor into :empno,:ename;           printf("the empno %d\'s name is %s\n",empno,ename);           i=i+1;     }          printf("Yeah!We get %d records\n",i);

     EXEC SQL close emp_cursor;          EXEC SQL commit work release;}

C语言打开Oracle数据库

6、更改tnsname文件如下:

UMAIL =  (DEscrīptION =    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = umail)    )  )

EXTPROC_CONNECTION_DATA =  (DEscrīptION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    )    (CONNECT_DATA =      (SID = PLSExtProc)      (PRESENTATION = RO)    )  )

C语言打开Oracle数据库

7、编译方法:预编译 proc test.pc注:这步是依赖于$ORACLE_HOME/precomp/admin/pcscfg.cfg

编译:gcc -o test test.c $ORACLE_HOME/lib/libclntsh.so

C语言打开Oracle数据库

8、执行测试testcd /tmp;./test

C语言打开Oracle数据库

9、以上就是小编带给大家用C语言打开Oracle数据库关键所在,希望大家可以喜欢,如果喜欢的话可以点赞哦,也可以发表自己的看法。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢