摘要:說(shuō)明C語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)的原理、方法及主要步驟,并用實(shí)例代碼詳解基本的數(shù)據(jù)操作。
關(guān)鍵詞:C語(yǔ)言;ODBC;訪問(wèn)數(shù)據(jù)庫(kù);SQL Server;事務(wù)處理
中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007—9599 (2012) 14—0000—02
一、引言
C語(yǔ)言與硬件結(jié)合比較直接,運(yùn)行速度快,占用空間小,同時(shí)又比匯編語(yǔ)言更接近高級(jí)語(yǔ)言,目前廣泛應(yīng)用于嵌入式系統(tǒng)開發(fā)、低級(jí)操作系統(tǒng)上的應(yīng)用程序等領(lǐng)域開發(fā)。訪問(wèn)數(shù)據(jù)庫(kù)既是C語(yǔ)言的重點(diǎn),也C語(yǔ)言的是難點(diǎn)。但是,完整的C語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)的資料在一般C語(yǔ)言教材中很難見到。鑒于此,將過(guò)去在這方面的一些開發(fā)經(jīng)驗(yàn)整理成文,與同行交流。
二、選擇ODBC
SQL Server是一個(gè)中型數(shù)據(jù)庫(kù),本文選用SQL Server作為C程序存放數(shù)據(jù)的載體。
SQL Server提供了3種與應(yīng)用程序的接口:ODBC、ADO和JDBC。JDBC 是專為Java語(yǔ)言提供的,不適合C語(yǔ)言;ADO是面向?qū)ο蟮?,如果使用ADO對(duì)象訪問(wèn)SQL Server數(shù)據(jù)庫(kù),需要在程序中聲明或新建ADO對(duì)象,然后調(diào)用ADO對(duì)象的屬性和方法,才能實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀寫操作。但是,C語(yǔ)言不支持面向?qū)ο?。因此?種接口只能選擇ODBC。
在C++中,ODBC API封裝成了ODBC類;而在Visua C++中,提供了MFC ODBC類,進(jìn)一步封裝了ODBC API,極大地簡(jiǎn)化了ODBC的使用。不過(guò),這是以犧牲程序的效率和空間為代價(jià)的。
三、 ODBC應(yīng)用程序主要步驟
ODBC應(yīng)用程序的主要步驟如圖1所示。其中步驟4要做的工作取決于所執(zhí)行的SQL語(yǔ)句的類型。如果語(yǔ)句類型是SELECT或編目函數(shù),則讀取結(jié)果;是UPDATE、DELETE或INSERT,則讀取行計(jì)數(shù);是其他SQL語(yǔ)句,執(zhí)行步驟3或步驟5。
6個(gè)步驟是ODBC 應(yīng)用程序的一般流程。對(duì)于特定的應(yīng)用程序,多數(shù)會(huì)有一些變化。
四、基本數(shù)據(jù)操作編程
基本數(shù)據(jù)操作包括數(shù)據(jù)查詢、插入、修改和刪除。其中4.2小節(jié)在講述數(shù)據(jù)修改的同時(shí),順帶講述了數(shù)據(jù)一致性的一個(gè)十分重要的問(wèn)題——事務(wù)處理。
(一)數(shù)據(jù)查詢
例子是用戶登錄系統(tǒng)。應(yīng)用程序使用SELECT語(yǔ)句查詢是否存在這個(gè)用戶。SELECT語(yǔ)句中帶兩個(gè)參數(shù)Account 和 Password,分別接收用戶輸入的賬戶和密碼。代碼如下:
// 構(gòu)造SQL語(yǔ)句。
(二)數(shù)據(jù)插入
本小節(jié)涉及同時(shí)完成兩次數(shù)據(jù)插入,兩次操作作為一個(gè)事務(wù)來(lái)處理。事務(wù)在連接級(jí)上完成,ODBC支持自動(dòng)提交模式和手工提交模式。例子是同時(shí)向數(shù)據(jù)表tbEnregister和tbTransaction分別插入一條記錄,這兩件事情應(yīng)該被作為一個(gè)事務(wù),要么都做,要么都不做。代碼如下:
// 構(gòu)造SQL語(yǔ)句。
(三)數(shù)據(jù)修改
例子是收文審核人對(duì)收文登記人提交的收文辦理單進(jìn)行審核,審核以后簽署意見并將收文處理單提交給下一步辦理人(或暫不提交)。應(yīng)用程序使用UPDATE語(yǔ)句對(duì)數(shù)據(jù)表Transaction 中的Auditing或DraftMan字段進(jìn)行相應(yīng)修改。代碼如下:
/*讓用戶選擇一份需要審核的收文辦理單,應(yīng)用程序?qū)⑦@份收文的相關(guān)信息顯示在屏幕上。*/
// 構(gòu)造SQL語(yǔ)句。
(四)數(shù)據(jù)刪除
例子是使用SQL語(yǔ)句DELRTE,按用戶按輸入的文號(hào),從數(shù)據(jù)表tbEnregister中刪除一份收文辦理單。
代碼如下:
五、結(jié)束語(yǔ)
ODBC應(yīng)用程序6個(gè)步驟是應(yīng)用程序的一般流程。對(duì)于特定的應(yīng)用程序,不可能以精確的順序經(jīng)歷一般流程,多數(shù)會(huì)有一些變化,具體問(wèn)題,靈活應(yīng)用。
參考文獻(xiàn):
[1][美]微軟公司.Microsoft ODBC 3.0 Programmer’s Referenceand SDK Guide:程序員參考及SDK指南(上冊(cè)).希望圖書創(chuàng)作室譯.北京希望電腦公司,1999