基于WinCE操作系統的ARM9系列嵌入式網絡模塊(如EM9000),自英創公司推出以來,以其穩定可靠的運行性能、完善的硬件接口、方便的開發工具(VC或VS.NET),在各個行業得到了廣泛的應用。由于微軟的最新開發工具Visual Studio.NET 2005支持使用C#語言進行應用開發,客戶可以更方便地構筑應用界面并調用方便可靠的API,越來越多的客戶選用它作為嵌入式設備開發調試工具。在應用中,客戶經常要使用到嵌入式本地數據庫進行數據庫建立、數據查詢、刪除等功能,針對此情況,我們在此對使用C#2005進行SQL CE 2.0本地數據庫開發進行介紹,并提供相應的例程。
客戶在進行SQL CE數據庫開發之前應已滿足如下條件:
1、確認其使用的ARM9模塊支持SQL CE數據庫開發。(客戶如無特殊配置要求,英創ARM9系列模塊均缺省支持SQL CE 2.0數據庫)
2、開發主機已經安裝了Visual Studio.NET 2005
3、客戶已經閱讀過英創相關文檔《使用VS2005連接和調試英創ARM9嵌入式模塊》,并能成功地使用C#進行程序的連接和調試
作為SQL CE開發的必要條件,必須在安裝了VS.NET 2005的開發主機上安裝Microsoft .NET Compact Framework SP2。該程序可在Microsoft網站上免費下載。英創開發光盤的“SOFTWARE\CSharp2005\CSharp軟件工具”目錄下也提供了此程序,程序名NETCFSetupv2(sp2).msi,雙擊運行它即可進行安裝,安裝過程按照其提示的缺省選擇即可。
安裝完畢后,即可進入程序的開發。客戶按照《使用VS2005連接和調試英創ARM9嵌入式模塊》的步驟創建工程項目后,要想在本項目中操作數據庫,首先要添加對System.Data.SqlServerCe.dll動態鏈接庫的引用,步驟如下:
1、在集成開發環境中,對“解決方案資源管理器”中的“引用”單擊右鍵,并單擊“添加引用”。
2、在彈出的“添加引用”對話框選項卡里選“瀏覽”,并查找目錄【C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v2.0】,可以看到System.Data.SqlServerCe.dll,選擇它并“確定”。
3、可以看到“解決方案資源管理器”中的“引用”下已經添加了對System.Data.SqlServerCe的引用。
但是光是在“解決資源管理器”的“引用”下添加還不行,還必須在程序的起始using語句中添加:using System.Data.SqlServerCe; 語句,應用程序才能直接調用相關的類和函數。
英創公司提供了一個小型但是基本功能具備的C#應用程序源代碼供客戶參考,客戶可以在應用光盤的如下目錄找到這個工程:【SOFTWARE\CSharp2005\SQLCE_001】,里面有比較詳細的注釋供客戶參考,客戶在參考本程序之前可以先將此程序進行編譯下載并在目標系統上運行,本例程在目標板上運行的界面如下:
程序界面及功能說明
四個功能按鈕:
● 數據庫及表創建按鈕:創建名稱為Leedata.sdf的數據庫,并在數據庫下建立一個Products表;創建完畢后按鈕自動灰化。
● 插入記錄按鈕:在Products表里插入8條固定內容的產品記錄;插入后按鈕自動灰化。
● 執行查詢按鈕:將Products表里8條記錄的產品名稱Name字段讀出,并將其作為選擇項顯示在下拉菜單框里;完畢后,顯示缺省選中記錄的各個字段到文本框;執行后按鈕自動灰化。
● 刪除記錄按鈕:將當前選中顯示的記錄從Products表中刪除;刪除完畢后程序會自動重新載入下拉菜單,并重新載入缺省記錄顯示;當8條記錄均被刪除完畢Products成為空表后,本按鈕自動灰化,并激活插入記錄按鈕。
一個下拉菜單框:載入Products表里各條記錄的產品名稱Name字段,并供用戶選擇查詢。
五個文本框:顯示當前被選中記錄的各項字段值。
需要注意的語言點
1、AppPath=System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase.ToString()); ///獲取當前目錄路徑
2、SqlCeEngine eng = new SqlCeEngine('Data Source=' + slocalDatabaseName);
eng.CreateDatabase();
// 創建數據庫,在SQL CE里只能通過此方法創建數據庫
3、SqlCeConnection localConnection = new SqlCeConnection('Data Source=' + slocalDatabaseName);
localConnection.Open();
// 連接打開數據庫
4、SqlCeCommand cmdCmd = new SqlCeCommand(SQL語句字符串, localConnection);
cmdCmd.CommandType = CommandType.Text;
cmdCmd.ExecuteNonQuery();
// 進行一次SQL操作的通用方法
5、SqlCeDataReader dr;
SqlCeCommand cmdGetData = new SqlCeCommand('SELECT 字段 FROM 表', localConnection);
dr = cmdGetData.ExecuteReader();
while (dr.Read()){…}
// 查詢方法的一種
6、SqlCeCommand cmdGetData = new SqlCeCommand();
SqlCeDataReader dr;
cmdGetData.Connection = localConnection;
cmdGetData.CommandType = CommandType.TableDirect;
cmdGetData.CommandText = 表;
cmdGetData.IndexName = 某字段的索引名;
dr = cmdGetData.ExecuteReader();
dr.Seek(DbSeekOptions...., ...);
if (dr.Read()) {...}
// 又一種查詢方法
成都英創信息技術有限公司 028-8618 0660