1.
簡介
在windows
下訪問oracle
資料庫可以使用
ado,ado.net,oledb,odbc,
跨平台的
occi
等方法,
其中速度最快,對
oracle
支援最完整的是
oracle
提供的occi.
2.
安裝occi sdk
occi sdk
包含在oracle
客戶端中,在如下位置可以找到:
標頭檔案:
c:\oracle\ora92\oci\include
庫檔案:
c:\oracle\ora92\oci\lib\msvc
推薦安裝
oracle
即時客戶端(
instant client
),它也包含有
occi sdk。
標頭檔案:
instantclient_10_2\sdk\include
庫檔案:
instantclient_10_2\sdk\lib\msvc
3.
編譯occi
程式
關於在vc
下如何編譯,除錯
occi
程式,參見《
vc++除錯occi程式的關鍵設定》
4.occi
程式設計步驟
4.1
連線到資料庫
//建立
occi
上下文環境
environment
*env
=environment
::createenvironment
();assert
(env
!=null);
//建立資料庫連線
connection
*conn
=env
->
createconnection
("uid"
,"pwd"
,"oracle_svr_name"
);//...
// todo:
插入自己的** //
關閉連線
env->
terminateconnection
(conn);
//釋放
environment
::terminateenvironment
(env);
4.2
執行基本的
sql語句
//建立
sql語句控制控制代碼
statement
*stmt
=conn
->
createstatement
();a.
執行一般的
sql語句
stmt
->
executeupdate
("create table basket_tab (fruit varchar2(30), quantity number)");
stmt
->
executeupdate
("delete basket_tab");
b.
重複利用
sql語句
,引數化的
sql語句
//:1,:2
是引數佔位符
stmt
->
setsql
("insert into basket_tab values(:1,:2)");
// 第乙個引數
stmt
->
setstring
(1,"bananas"
);//
第二個引數
stmt
->
setint
(2,5);
stmt
->
executeupdate
();
c.
一次修改多行資料
//最多允許的迭代次數,注意這個引數需要在
set***
系列函式之前執行
stmt
->
setmaxiterations
(int
maxiterations
);//
指定某個引數的大小,
string
和byte需要
stmt
->
setmaxparamsize
(int
parameterindex
,int
maxparamsize
);for
(...)
stmt
->
executeupdate
();
d.
執行查詢:獲取結果集
(記錄集
)
resultset*rs
=stmt
->
executequery
("select * from basket_tab"
);while(rs
->
next
())
//關閉結果集
stmt
->
closeresultset(rs
); e.
執行儲存過程
//指定儲存過程
countfruit
stmt
->
setsql
("begin countfruit(:1, :2); end:");
//設定第乙個引數
stmt
->
setstring
(1,);
intquantity;//
註冊輸出引數
stmt
->
registeroutparam
(2,type
::occiint
,sizeof
(quantity
));//
執行此儲存過程
stmt
->
executeupdate
();
//釋放
sql語句控制控制代碼
conn
->
terminatestatement
(statement
*stmt
);4.3
事務
所有的ddl
預設開始並自動提交乙個事務
所有的dml預設開始乙個事務,且不會自動提交 //
可以指定
dml是否自動提交
stmt
->
setautocommit
(true
/false);
//也可以手動提交或回滾。
conn
->
commit
();
conn
->
rollback
();
4.4
異常處理
try
catch
(sqlexception
&sqlexcp)
catch
(exception
&excp
)
在VC中使用CCheckListBox
在軟體應用中經常會遇到需要複選功能的列表框。類cchecklistbox實現了windows複選列表框。複選列表框顯示項的乙個列表,例如檔名列表。列表中的每項都有乙個核取方塊,方便使用。但是vc的控 件列表中並新增cchecklistbox,因此在使用cchecklistbox還要進行一些手動設定,...
在VC中使用Debug
選定debug編譯選項 build set active configuration win32 debug 或者在build工具欄上的listbox中選擇debug。debug定義了 debug巨集,而release定義了ndebug巨集。先按f12編譯browse資訊 這樣編譯後可以查到變數定義...
在VC中使用GDI
gdi 可應用於二維向量圖象,柵格圖象及排版,是為c c 程式設計師而設計的表現為c 類而存在的介面,能用於一切基於windows的應用中。作為gdi的後繼者,gdi 在gdi中增加了新功能,如文字的反鋸齒,漸變筆刷,alpha溶合 也優化了gdi許多已有的功能。此外,gdi 改變了程式設計模式,使...