gcc oracle mysql_Linux下C语言访问Oracle数据库Demo
前提條件
1. Linux環(huán)境已經(jīng)存在,安裝好了Oracle
本demo 運(yùn)行環(huán)境
本地環(huán)境???? RedHat LINUX AS 4 ,ORACLE 10G
本地?cái)?shù)據(jù)庫(kù)sid orcl,ip:127.0.0.1,用戶名:kingbi,密碼:kingbi,表dsd_test. 顯示表dsd_test 的所有記錄.
步驟:
(1) 創(chuàng)建表 create table dsd_test(aa char(3)); insert into dsd_test? values('123');insert into dsd_test? values('456');
被配置本地命名服務(wù)($ORACLE_HOME/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
(2) 修改配置文件 /etc/profile (用root用戶修改,增加 2句代碼
...
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
export ORACLE_HOME=........????????????????????????????????????????????????????????? #以下2行為新加
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib????????? #這句很關(guān)鍵
.....
(3) 更改$ORACLE_HOME/precomp/admin/pcscfg.cfg (include= 開(kāi)頭的語(yǔ)句為新加的,,/usr/lib/gcc/i386-redhat-linux/3.4.3/include 也是新加的) www.linuxidc.com
sys_include=(/ade/aime_rdbms_9819/oracle/precomp/public,/usr/include,/usr/lib/gcc-lib/i486-SUSE-linux/2.95.3/include,/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include,/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include,/usr/lib/gcc/i386-redhat-linux/3.4.3/include)
include=$ORACLE_HOME/lib
include=$ORACLE_HOME/precomp/precomp/include
include=$ORACLE_HOME/precomp/oracore/include
include=$ORACLE_HOME/precomp/oracore/public
include=$ORACLE_HOME/precomp/rdbms/include
include=$ORACLE_HOME/precomp/rdbms/public
include=$ORACLE_HOME/precomp/rdbms/demo
include=$ORACLE_HOME/precomp/nlsrtl/include
include=$ORACLE_HOME/precomp/nlsrtl/public
include=$ORACLE_HOME/precomp/network_src/include
include=$ORACLE_HOME/precomp/network_src/public
include=$ORACLE_HOME/precomp/network/include
include=$ORACLE_HOME/precomp/network/public
include=$ORACLE_HOME/precomp/plsql/public
ltype=short
(4) 編寫(xiě)c 程序 test.pc文件 www.linuxidc.com
#include
EXEC SQL INCLUDE SQLCA;
int main()
{
//聲明SQL變量
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR user[20],pass[20],tnsname[20];
//VARCHAR預(yù)編譯后為struct { unsigned short len; unsigned char arr[20];}
char ename[20];
EXEC SQL END DECLARE SECTION;
//聲明結(jié)束
int i=0;
strcpy(user.arr,"kingbi");
user.len=(unsigned short)strlen((char *)user.arr);
strcpy(pass.arr,"kingbi");
pass.len=(unsigned short)strlen((char *)pass.arr);
strcpy(tnsname.arr,"orcl");
tnsname.len=(unsigned short)strlen((char *)tnsname.arr);
//連接數(shù)據(jù)庫(kù)
EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;
//執(zhí)行查詢
EXEC SQL declare emp_cursor cursor for
select aa from kingbi.test;
EXEC SQL open emp_cursor;
EXEC SQL WHENEVER NOT FOUND DO break;
while(1)
{
EXEC SQL fetch emp_cursor into :empno,:ename;
printf("the name is %s\n",ename);
i=i+1;
}
printf("Yeah!We get %d records\n",i);
EXEC SQL close emp_cursor;
EXEC SQL commit work release;
}
(5) 預(yù)編譯 ,編譯后會(huì)生成 .c文件
proc test.pc
(6)編譯
gcc -o test test.c $ORACLE_HOME/lib/libclntsh.so
(6) 運(yùn)行生成的可執(zhí)行文件
./test
輸出:
the name is 123
the name is 456
Yeah!We get 2 records
總結(jié)
以上是生活随笔為你收集整理的gcc oracle mysql_Linux下C语言访问Oracle数据库Demo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python [Leetcode 345
- 下一篇: 每日一题:1220. 统计元音字母序列的