毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精

以文本方式查看主題

-  曙海教育集團(tuán)論壇  (http://www.scb-ycwb.com/bbs/index.asp)
--  Linux應(yīng)用開發(fā)  (http://www.scb-ycwb.com/bbs/list.asp?boardid=32)
----  Oracle應(yīng)用Linux開發(fā)C  (http://www.scb-ycwb.com/bbs/dispbbs.asp?boardid=32&id=1673)

--  作者:wangxinxin
--  發(fā)布時(shí)間:2010-11-23 11:05:05
--  Oracle應(yīng)用Linux開發(fā)C
隨著Linux操作系統(tǒng)的不斷完善與發(fā)展,出現(xiàn)了大量基于 Linux平臺(tái)的應(yīng)用開發(fā),原有的基于UNIX平臺(tái)的商業(yè)軟件也不斷被移植到Linux上來。最典型的,Oracle公司宣布,他的現(xiàn)有的及未來所有的數(shù)據(jù)庫產(chǎn)品和商業(yè)應(yīng)用都將支持Linux平臺(tái)。本文所述OCI for Linux的C語言庫,正是Linux平臺(tái)上Oracle的C語言接口。
我們知道,在一個(gè)復(fù)雜的Oracle數(shù)據(jù)庫應(yīng)用中,C程序代碼由于其語言本身的靈活性、高效性,往往被加入到其商務(wù)邏輯的核心層模塊中。Oracle數(shù)據(jù)庫對(duì)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)閉由上一個(gè)函數(shù)打開的游標(biāo)。
6)int sqlo_fetch(int sth) 從打開的游標(biāo)中獲取一條記錄,并將之存入一個(gè)已分配內(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),返回一個(gè)打開的游標(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ù),這里就不一一列出了。
下面舉幾個(gè)例子說明這些函數(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語句中表示為一個(gè)變量(名字隨意),在sqlo_bind_by_name函數(shù)中與packet_name變量綁定。在變量綁定完畢后,就可以調(diào)用sqlo_execute函數(shù)來執(zhí)行這個(gè)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
毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精
国产91精品免费| 婷婷国产v国产偷v亚洲高清| 91成人免费在线视频| 日韩高清不卡一区二区三区| 欧美大片一区二区| 色天使久久综合网天天| 在线观看三级视频欧美| 99精品视频一区二区三区| 93久久精品日日躁夜夜躁欧美| 成人在线视频一区| 久久精品久久99精品久久| 日韩国产精品大片| 在线看国产一区二区| 欧美图片一区二区三区| 色婷婷综合久色| 欧美在线观看视频一区二区三区| 色噜噜狠狠色综合中国| 欧洲一区二区av| 欧美日韩亚洲国产综合| 欧美一区二区美女| 2022国产精品视频| 一色屋精品亚洲香蕉网站| 亚洲精品久久嫩草网站秘色| 午夜视频一区二区三区| 麻豆免费精品视频| 成人福利视频在线看| 91老司机福利 在线| 欧美日韩电影在线播放| 精品久久久久久久久久久院品网 | 国产精品九色蝌蚪自拍| 亚洲一区二区精品视频| 日本亚洲天堂网| 成人中文字幕在线| 欧美精品国产精品| 国产精品久久久久久久久搜平片| 亚洲高清免费在线| 国产69精品久久99不卡| 精品视频1区2区| 亚洲三级理论片| 国内精品国产成人国产三级粉色| 色综合天天综合色综合av| 精品国产伦一区二区三区观看体验| 亚洲美女电影在线| 国产一区二区伦理片| 欧美喷潮久久久xxxxx| 国产精品免费av| 久久精品999| 3d动漫精品啪啪| 视频一区中文字幕国产| 国产一区二区中文字幕| 国产精品久久久久久福利一牛影视 | 91精品国产一区二区| 国产精品欧美综合在线| 午夜婷婷国产麻豆精品| 色哟哟一区二区三区| 国产日韩v精品一区二区| 免费国产亚洲视频| 欧美一区二区在线视频| 中文字幕色av一区二区三区| 久久成人免费网站| 欧美性受xxxx黑人xyx性爽| 精品国产91洋老外米糕| 蜜桃av噜噜一区| 91精品国产aⅴ一区二区| 国产欧美日韩一区二区三区在线观看| 亚洲色图在线播放| 日韩黄色免费网站| 色综合天天综合网天天看片| 国产精品乱码妇女bbbb| 国产美女一区二区| 国产日韩欧美精品电影三级在线| 三级久久三级久久| 欧美影视一区二区三区| 久久久亚洲高清| 国产一区不卡精品| 国产视频一区二区三区在线观看| 日本视频免费一区| 欧美精选午夜久久久乱码6080| 亚洲第一成人在线| 91理论电影在线观看| 亚洲综合色成人| 91黄色免费看| 午夜精品福利在线| www久久久久| 中文字幕欧美激情| 欧美中文字幕亚洲一区二区va在线| 亚洲国产成人tv| 欧美变态凌虐bdsm| 91首页免费视频| a在线欧美一区| 国产女主播视频一区二区| 韩国欧美一区二区| 樱花草国产18久久久久| 91精品免费观看| 91视频精品在这里| 国产综合色视频| 亚洲欧美日韩国产综合在线| 6080亚洲精品一区二区| 成人av电影在线播放| 亚洲第一精品在线| 中文字幕av一区二区三区免费看 | 日日夜夜免费精品| 国产女主播视频一区二区| 欧美最猛性xxxxx直播| 久久综合综合久久综合| 中文幕一区二区三区久久蜜桃| 国产91精品一区二区麻豆网站| 亚洲午夜电影网| 91精品国产入口| 色综合咪咪久久| 美女脱光内衣内裤视频久久影院| 亚洲国产成人在线| 2023国产精品| 欧美一区二区美女| 欧美一区二区三区免费视频| 欧美最新大片在线看| 色婷婷综合五月| av成人免费在线观看| 国产白丝网站精品污在线入口| 日本不卡中文字幕| 天堂va蜜桃一区二区三区| 亚洲成av人片一区二区三区| 午夜精品一区二区三区电影天堂| 亚洲精品国产无套在线观| 亚洲精品第一国产综合野| 亚洲女人****多毛耸耸8| 日韩理论片在线| 亚洲免费看黄网站| 天天影视涩香欲综合网 | 日韩精品一区二| 日韩三级视频在线观看| 精品久久久久香蕉网| 中文子幕无线码一区tr| 亚洲欧洲成人自拍| 亚洲一区自拍偷拍| 久久99精品久久久久婷婷| 国产盗摄视频一区二区三区| 91小宝寻花一区二区三区| 欧美亚洲综合久久| 精品久久久久久久久久久久包黑料| 国产农村妇女精品| 亚洲免费成人av| 国内精品在线播放| 99久精品国产| 5858s免费视频成人| 国产精品视频九色porn| 日韩精品视频网| 国产高清精品久久久久| 欧美揉bbbbb揉bbbbb| wwwwww.欧美系列| 婷婷中文字幕一区三区| 国产黑丝在线一区二区三区| 欧美日本在线播放| 中文字幕一区二区三区av| 极品销魂美女一区二区三区| 91视频免费看| 久久综合久久综合亚洲| 日韩精品成人一区二区在线| 一道本成人在线| 亚洲国产精品t66y| 7777精品伊人久久久大香线蕉超级流畅 | 一区二区三区免费网站| 国产剧情在线观看一区二区| 制服丝袜亚洲播放| 亚洲超碰精品一区二区| 在线观看www91| 亚洲一区电影777| 欧美专区在线观看一区| 亚洲欧洲无码一区二区三区| 国产suv精品一区二区883| 精品日韩在线观看| 国产一区二区在线看| 久久精品亚洲精品国产欧美kt∨| 不卡一区二区中文字幕| 欧美一区二区三区视频在线观看| 国产欧美日韩视频一区二区 | 五月综合激情婷婷六月色窝| 亚洲成av人片在www色猫咪| 在线视频一区二区三| 日韩av电影天堂| 久久精品视频免费观看| 99久久国产免费看| 精品国偷自产国产一区| 精品日韩在线观看| 国产精品嫩草影院com| 亚洲gay无套男同| 国产精品一区一区三区| 成人听书哪个软件好| 欧美性色综合网| 久久久蜜桃精品| 亚洲va国产va欧美va观看| 国产在线精品一区二区不卡了| 国产白丝精品91爽爽久久| 欧美日韩精品高清| 日韩亚洲欧美在线观看| 亚洲已满18点击进入久久| 国产69精品久久99不卡| 欧美人动与zoxxxx乱| 久久久久久久网| 午夜影视日本亚洲欧洲精品|