摘要:Excel作為普及率最高的辦公軟件,受到廣泛好評,同時Excel具有記錄、統(tǒng)計數(shù)據(jù)的類似數(shù)據(jù)庫的功能,被廣泛用于日常的小規(guī)模的數(shù)據(jù)記錄和管理。為了增加對Excel的自動化管理,可以使用c++等語言實現(xiàn)對Excel表的程序訪問,提高工作效率。目前,網(wǎng)絡共享資源中,對于ODBC API訪問Excel表的介紹非常稀少,也不系統(tǒng)。該文希望能對這一領域進行補充和整理。
關鍵詞:ODBC API;VC++6;連接數(shù)據(jù)庫;釋放資源
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)05-0949-03
Abstract:Excel as the most popular office software, was widely praised,then similar database with records, statistical data functions,Widely used for data recording and management of small scale daily. In order to increase the automation management for Excel,you can use the C++ language to achieve the Excel from program access,improve work efficiency. At present, in the network shared resource,accessing the Excel database by ODBC API is very rare,and not a system. I hope this paper can supplement and finishing in this field.
Key words:ODBC API;VC++6;Connect to the database;release resources
將具體的介紹Vc6環(huán)境下,使用ODBC API完成對Excel表,執(zhí)行建表、添加、刪除、追加的操作完整的過程。文章每一個部分,都包括兩個部分,第一部分是文字描述,后一個部分是具體步驟和代碼。
1 ODBC API操作Excel的概述
1.1 動態(tài)的設置ODBC數(shù)據(jù)源
動態(tài)設置數(shù)據(jù)源,大大提高了程序的自動化程度和實用性,更人性話的完成用戶操作Excel表的工作,因此,這也是很重要的一個部分。動態(tài)設置數(shù)據(jù)源,本質的操作就是:將信息寫入到注冊表中。下面就是操作的源代碼,具體步驟在代碼注釋中。
當然在完成上述步驟之后,還需要一些善后工作,比如釋放申請的動態(tài)內存等,防止內存泄漏。這些是程序員基本的素質,這里簡單的提一下,之后將省略,只介紹關鍵的步驟和代碼。
1.2 ODBC API操作數(shù)據(jù)庫的步驟
完成了數(shù)據(jù)源的注冊以后,接下來的工作就是連接數(shù)據(jù)庫。當然Excel并不算數(shù)據(jù)庫,但是,因為它在辦公中的使用頻率很高,使用人群很大,比起mdb和sql以及顯得落后的dbf這些數(shù)據(jù)庫來說,更具有實用性。而且對于普通的公司信息來說,Excel表的存儲能力和實用性還是非常合適的。這也是我寫這篇文章的意義所在。這里,我是根據(jù)我所做的一個程序來寫的,所以,Excel表的名稱就是我自定義的:c:\\guozichu\\yihaopin.xls(翻譯過來就是”國資處的易耗品表”)。
ODBC API連接數(shù)據(jù)庫,有固定的步驟,相對微軟的DAO和ADO來說代碼量大了很多。連接需要七個大的步驟,我還將這的七步,分為三個部分,分別介紹如下:
下面,就分別介紹這三個部分。
2 ODBC API操作Excel的具體步驟
2.1 第一部分 連接數(shù)據(jù)庫
1) 申請變量
2) 創(chuàng)建環(huán)境句柄
3) 設置環(huán)境句柄
4) 申請連接句柄
5) 設置連接屬性
6) 連接數(shù)據(jù)源
為了便于理解,下面給出SQLConnect函數(shù)的原型和參數(shù)說明:
連接數(shù)據(jù)源的源代碼
2.2 第二部分 操作部分
完成了連接工作,之后就是生成按照用戶訪問數(shù)據(jù)表的要求,生成SQL語句,然后操作數(shù)據(jù)表,獲得返回集。
1) 申請表句柄
2) 生成SQL語句
3) 執(zhí)行SQL語句
至此,完成了對Excel表的連接和操作,以后就是對SQL執(zhí)行的結果集進行處理,比如用while循環(huán)和SQLFetch(hstmt)函數(shù),對結果集hstmt進行處理。
2.3 第三部分 結束的工作
所以要有結束部分,因為打開的數(shù)據(jù)庫,需要關閉和斷開連接,否則下一次的連接申請將不能進行。而且連接數(shù)據(jù)表和操作的時候,申請了很多系統(tǒng)資源,都需要在這一步進行釋放。這才是一個完整的ODBC API訪問數(shù)據(jù)庫的過程。
需要特別注意的是順序,釋放資源必須按下列循序釋放:
參考文獻:
[1] Silberschatz.數(shù)據(jù)庫系統(tǒng)概論[M].楊冬青,唐世渭,譯.北京:機械工業(yè)出版社,2000.
[2] 韋樸,陳泰生.Visual C++通用范例開發(fā)金典[M].北京:電子工業(yè)出版社,2008.
[3] 徐兆元.C++從入門到精通[M].北京:化學工業(yè)出版社,2009.
[4] 王晟.Visual Basic數(shù)據(jù)庫開發(fā)經典案例解析[M].北京:清華大學出版社,2006.