在使用OTL進(jìn)行編程之前,要首先確定使用的Oralce版本以及所選用的字符集。OTL支持目前幾乎所有的主流數(shù)據(jù)庫(kù),可以通過(guò)宏啟用otlv
關(guān)于OTL,網(wǎng)上介紹的也不少,但看來(lái)看去也只是官方的那些文檔。OTL很好用,結(jié)合官方提供的一些例子,多多嘗試才能領(lǐng)悟。經(jīng)過(guò)一個(gè)月左右的項(xiàng)目開(kāi)發(fā),對(duì)OTL也有些了解,在這里總結(jié)一下,希望對(duì)剛接觸OTL的新手有所幫助。其中有些地方,比如對(duì)網(wǎng)絡(luò)異常的處理,可是費(fèi)了我兩天的時(shí)間才解決的,我那個(gè)汗哪。廢話少說(shuō),開(kāi)始正題:
一、開(kāi)始前的準(zhǔn)備工作
在使用OTL進(jìn)行編程之前,要首先確定使用的Oralce版本以及所選用的字符集。OTL支持目前幾乎所有的主流數(shù)據(jù)庫(kù),可以通過(guò)宏啟用otlv4.h中對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作接口。
如:使用Oracle 11g R2、字符集選擇UTF8,則可在包含otlv4.h之前聲明以下兩個(gè)宏:
#define OTL_ORA11G_R2
#define OTL_ORA_UTF8
#include "otlv4.h"
....
二、常用類及其常用成員
1. otl_connect類
static int otl_initialize(const int threaded_mode=0):用于初始化OTL環(huán)境的靜態(tài)函數(shù),參數(shù)指定是用于多線程還是單線程。它不保證線程安全,也就是說(shuō),如果多個(gè)線程共享使用一個(gè)otl_connect對(duì)象,需要加鎖進(jìn)行控制。有個(gè)同事因?yàn)樵诙嗑€程環(huán)境下使用了默認(rèn)的參數(shù)0,就導(dǎo)致了程序異常。但是單線程環(huán)境下,參數(shù)設(shè)1是沒(méi)有問(wèn)題的。所以,可以考慮將此參數(shù)直接設(shè)為1。
void rlogon(...):這個(gè)函數(shù)有多個(gè)版本,請(qǐng)注意參考官方文檔中與相應(yīng)數(shù)據(jù)庫(kù)版本對(duì)應(yīng)的函數(shù)聲明。11g中用到的參數(shù)說(shuō)明如下:
const char *connect_str:連接字符串,格式為:"用戶名/密碼@數(shù)據(jù)庫(kù)服務(wù)名"
const int aauto_commit:自動(dòng)提交模式。若此參數(shù)設(shè)為0(默認(rèn)),則通過(guò)此連接對(duì)象執(zhí)行的事務(wù)不會(huì)自動(dòng)提交。如使用direct_exec執(zhí)行刪除記錄的操作時(shí),需要手動(dòng)調(diào)用commit()成員函數(shù)提交事務(wù);若設(shè)為1則通過(guò)此otl_connect對(duì)象開(kāi)啟的事務(wù)會(huì)自動(dòng)提交。
long direct_exec(...):
const char *sqlstm: 指定所要執(zhí)行的“靜態(tài)SQL語(yǔ)句”,即不產(chǎn)生輸入或輸出的SQL語(yǔ)句。如delete from book whereC++';
delStream.flush(); //立即執(zhí)行刪除操作,盡管當(dāng)前流中只有一條記錄
long get_rpc():獲取流中SQL語(yǔ)句執(zhí)行后所影響到的記錄數(shù),如插入100條記錄,則調(diào)用此函數(shù)返回的即為100
int good():判斷流對(duì)象是否已正常打開(kāi),已打開(kāi)返回1。注意:若復(fù)用一個(gè)流對(duì)象時(shí),必須先調(diào)用close函數(shù)將其關(guān)閉,,然后再調(diào)用open重新打開(kāi)。
int get_dirty_buf_len():獲取當(dāng)前流對(duì)象緩沖區(qū)中的記錄數(shù),其最大值為緩沖區(qū)size-1。每當(dāng)緩沖區(qū)滿時(shí)會(huì)自動(dòng)刷新,刷新后再調(diào)用此函數(shù)時(shí)返回0
3.otl_exception類
該類的幾個(gè)成員用于表示異常的信息,如:
char stm_text[2048]:出錯(cuò)的SQL語(yǔ)句;
char var_info[256]:若在流中使用了與實(shí)際類型不符的綁定變量,此數(shù)組的值為綁定變量的信息;
unsigned char msg[1000]:這個(gè)我比較喜歡用,此數(shù)組顯示出具體的異常信息(包括oracle返回的錯(cuò)誤碼),如連接超時(shí)等等。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com