久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久

Rss & SiteMap

曙海教育集團(tuán)論壇 http://www.bjzhda.cn

曙海教育集團(tuán)論壇
共2 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標(biāo)題:Oracle應(yīng)用Linux開發(fā)C

1樓
wangxinxin 發(fā)表于:2010-11-23 11:05:05
隨著Linux操作系統(tǒng)的不斷完善與發(fā)展,出現(xiàn)了大量基于 Linux平臺的應(yīng)用開發(fā),原有的基于UNIX平臺的商業(yè)軟件也不斷被移植到Linux上來。最典型的,Oracle公司宣布,他的現(xiàn)有的及未來所有的數(shù)據(jù)庫產(chǎn)品和商業(yè)應(yīng)用都將支持Linux平臺。本文所述OCI for Linux的C語言庫,正是Linux平臺上Oracle的C語言接口。
我們知道,在一個復(fù)雜的Oracle數(shù)據(jù)庫應(yīng)用中,C程序代碼由于其語言本身的靈活性、高效性,往往被加入到其商務(wù)邏輯的核心層模塊中。Oracle數(shù)據(jù)庫對C語言的接口就是OCI, Oracle 8.05int sqlo_init(int threaded_mode) 初始化程序庫接口,讀出環(huán)境變量,設(shè)置相應(yīng)的全局變量。當(dāng)前,threaded_mode設(shè)為0。
2)int sqlo_connect(int * dbh, char * connect_str) 連接數(shù)據(jù)庫,dbh為數(shù)據(jù)庫連接描述符,connect_str為用戶名/口令字符串。
3)int sqlo_finish(int dbh) 斷開數(shù)據(jù)庫連接。
4)int sqlo_open(int dbh, char * stmt, int argc, char *argv[]) 打開由stmt確定的查詢語句所返回的游標(biāo)。Argc,argv為查詢的參數(shù),后面我們將用更清晰的方法傳遞參數(shù)。
5)int sqlo_close(int sth) 關(guān)閉由上一個函數(shù)打開的游標(biāo)。
6)int sqlo_fetch(int sth) 從打開的游標(biāo)中獲取一條記錄,并將之存入一個已分配內(nèi)存空間中。
7)const char **sqlo_values(int sth, int *numbalues, int dostrip) 從內(nèi)存中返回上一次sqlo_fetch取得的值,是以字符串形式返回的。
8)以下介紹另一種檢索方式,int sqlo_prepare(int dbh, char const *stmt),返回一個打開的游標(biāo)sth。
9)int sqlo_bind_by_name(int sth, const char * param_name, int param_type, const void * param_addr, unsigned int param_size, short * ind_arr, int is_array) 將查詢語句的傳入?yún)?shù),按照名字的形式與函數(shù)中的變量綁定。如果你使用數(shù)組,那么參數(shù)param_addr和ind_arr必須指向該數(shù)組。
int sqlo_bind_by_pos(int sth, int param_pos, int param_type, const void * param_addr, unsigned int param_size, short * ind_arr, int is_array) 將查詢語句的傳出值,按照位置順序與函數(shù)中的變量綁定。
10)int sqlo_execute(int sth, int iterations) 執(zhí)行查詢語句。“Iterations”可設(shè)為“1”。
11)在執(zhí)行完數(shù)據(jù)庫操作后,我們可用int sqlo_commit (int dbh)提交操作,或用int sqlo_rollback(int dbh)回滾操作。
12)Libsqlora8還有其他一些操作函數(shù),這里就不一一列出了。
下面舉幾個例子說明這些函數(shù)如何使用。
cstr = "ocitest/ocitest"; //用戶名/口令
status = sqlo_init(0);
if (SQLO_SUCCESS != status)
{ printf ("sql_init failed. Exitingn");
exit(1);
}
status = sqlo_connect(&dbh, cstr); // int dbh
以上源代碼,顯示了如何連接數(shù)據(jù)庫
/* Select all and display */
char *select_stmt="SELECT cname, clength, colid FROM ocicolu";
if (0>(sd = sqlo_open(dbh, select_stmt, 0, NULL)))
{ printf("sqlo_open failed: %sn", sqlo_geterror(dbh));
return 0;
}
while (0 == sqlo_fetch(sd,1))
{ v = sqlo_values(sd, NULL, 1);
printf("Result: %sn",v);
}
if (0 > sqlo_close(sd))
{ printf("sqlo_open failed: %sn", sqlo_geterror(dbh));
return 0;
}
以上例子展示了第一種查詢方法,顯然,這種方法較簡單,但不夠靈活。
char *update_stmt =
"UPDATE ocitest.upload_log SET upload_fresh = where log_name = :1";
if (0 <= (sth = sqlo_prepare(dbh, update_stmt)))
{ if (SQLO_SUCCESS !=
(sqlo_bind_by_name(sth, ":1", SQLOT_STR, packet_name, 64, NULL, 0)
))
{ printf("sqlo_bind_param failed failed: %sn", sqlo_geterror(dbh) );
return 0;
}
}
if (SQLO_SUCCESS != sqlo_execute(sth, 1))
{ printf("sqlo_execute failed: %sn", sqlo_geterror(dbh) );
return 0;
}
上面的代碼顯示了如何通過名字綁定變量,“:1”在Oracle SQL語句中表示為一個變量(名字隨意),在sqlo_bind_by_name函數(shù)中與packet_name變量綁定。在變量綁定完畢后,就可以調(diào)用sqlo_execute函數(shù)來執(zhí)行這個SQL語句。
好了,我們已經(jīng)向大家介紹了Libsqlora8的基本使用方法,如果希望了解更多內(nèi)容,Libsqlora8的程序包中帶有詳細(xì)的說明和例子,大家不妨自己鉆研一下。有什么心得,歡迎和我聯(lián)系。E-mail:nick_chen@yeah.net /*-------------------------------------------------------------------------
* testlora.c
* Test programm for libsqlora8(Kai Poitschke)
* Assuming you installed the library with prefix=/usr/local, the command
* to compile this is:
* gcc -o sample sample.c -lsqlora8 -L$ORACLE_HOME/lib -lclntsh
*-----------------------------------------------------------------------*/
#include
#include
#include #include "sqlora.h" #define MAX_ITERS 10 #define MAX_LOOPS 1 /* how many time we run the tests */ #define CLOSE_CURSOR 1 /*-------------------------------------------------------------------------
* create our test table
*-----------------------------------------------------------------------*/
int create_table( int dbh )
{
int nkey;
char ckey;
double nv
共2 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團(tuán)
Powered By 曙海教育集團(tuán) Version 2.2
Processed in .01563 s, 2 queries.
主站蜘蛛池模板: 日韩精品中文字幕视频一区 | 国产自精品在线 | 曰韩三级 | 黄网在线观看免费 | 97视频免费在线观看 | 久草在线播放视频 | 亚洲欧美日韩另类在线 | 欧美毛片大全 | 伊人波多野结衣 | 国产aⅴ一区二区 | 久久久久久久国产免费看 | 精品动漫一区二区 | 亚洲视频男人的天堂 | www国产91 | 欧美一区二区三区免费看 | 韩国黄色一级毛片 | 久久久久久免费精品视频 | 国产精品久久免费观看 | 久久久久亚洲日日精品 | 免费观看的毛片手机视频 | 亚洲精品自产拍在线观看 | 一级作爱视频免费观看 | 色黄在线 | 性盈盈影院在线观看 | 成人做爰全视频 | 一级黄色大片 | 可以免费看黄的网站 | 男女免费视频网站 | 亚洲夜色 | 精品国产亚洲一区二区三区 | 视频国产91 | 视频一区二区三区自拍 | 精品国产一区二区三区成人 | 日韩三级在线观看视频 | 国产成人女人在线视频观看 | rion美乳弹出来四虎在线观看 | 欧美日韩一区二区三区视频在线观看 | 久爱www免费人成福利播放 | 日本久草网| 成人自拍视频在线 | 成人a毛片高清视频 |