在當前的嵌入式工控產品中,數據庫得到了越來越多的應用。通過數據庫,可以非常方便地存儲和檢索數據,極大地提高工作效率。英創公司基于WinCE的ARM9工控主板,提供了兩種類型的數據庫,供客戶的應用程序選擇。一種是WinCE自帶的數據庫,主要面對需要存儲的數據量較小,數據結構相對簡單的應用,例如系統的動態配置文件,則使用起來非常合適。另一種則是在PC中最流行的SQL數據庫,英創ARM9工控主板缺省配置的SQL數據庫版本為SQL CE2.0。在表一中,列出了WinCE自帶數據庫與SQL CE數據庫部分功能的對比,用戶可以根據自己的需要,選擇合適的數據庫。關于WinCE自帶數據庫的操作請參考《EVC高級編程及其應用開發》WinCE基礎數據庫編程部分。本文主要講解在eVC開發環境下,以使用ADOCE 3.1為例詳細說明開發SQLCE本地數據庫的方法。 表一:WinCE自帶數據庫與SQLCE數據庫功能對照表
WinCE 自帶數據庫
SQLCE 數據庫
開發方式
使用 API 函數操作
使用 SQL 語句操作
數據類型
較少 (9 種 )
較多 (20 種 )
與 pc 端 SQL Sever 數據同步
不支持
支持
更改表字段
不支持
支持
在EVC環境下由于沒有提供專門的API函數對SQLCE進行操作,需要通過ADOCE(Active Data Object for Windows CE)組件才能實現對SQLCE數據庫的操作。為了方便用戶使用SQLCE數據庫,利用ADOCE組件技術(ADOCE介紹在附錄一中),針對數據庫操作中常用的功能,包括創打開數據庫、建數據表等,英創提供了一個對SQLCE數據庫操作的管理類DBManager,應用程序通過調用該類中提供的API函數,就可以很方便的建立與SQLCE的鏈接、打開數據庫,并可以直接利用SQL語句來對數據庫進行建立表、為表添加記錄以及查詢表中的記錄等功能。在eVC環境下通過DBManager類訪問SQLCE數據庫模型如圖1所示。
圖1 EVC通過DBManager訪問數據庫模型
一、DBManager類及派生類說明 DBManager類主要提供打開數據庫、執行SQL語句等方法。其頭文件聲明如下: //函數功能:打開數據庫 //入口參數:lpszFileName表示要打開的數據庫名稱,為絕對路徑加文件名。 //出口參數:無 //返 回 值:TRUE:打開數據庫成功;FALSE:打開數據庫失敗 bool OpenDatabase(LPCTSTR lpszDBName); //函數功能:執行SQL語句 //入口參數:lpstrSql為要執行SQL語句的字符串。 //出口參數:無 //返 回 值:TRUE:執行SQL語句成功;FALSE:執行SQL語句失敗 bool ExecSql(LPCTSTR lpstrSql); 如果想靈活使用DBManager類對數據庫操作,必須了解SQL語句,常用SQL語句可以參考附錄二中的內容。但是,對于嵌入式工程師來說,有很多用戶對SQL語句并不了解,這樣,對用戶使用數據庫提高了門檻。在實際應用中,嵌入式主板的主要任務是把采集工業現場的狀態并保存到數據庫中,如果想查看分析數據,可以通過WebServer把數據庫信息傳輸到Client端。為了方便不了解SQL語句的用戶使用數據庫,我們在基類DBManager中提供了幾個虛函數,并給出在派生類中實現虛函數的例子。這樣,使用API函數就可以實現打開數據庫、創建表、插入記錄等操作。用戶可以根據要保存數據結構修改虛函數就可以滿足用戶操作數據庫的要求,下面以一個實際示例說明使用派來類的方法。