大部分企業應用程序都是以數據為中心的,這意味著你需要知道如何儲存信息。我的愛好是存儲數據,當Pocket PC上使用的是真正的數據庫——SQL Server 2000 Windows CE Edition。因此,我的第一個建議是得到你所需要的一個SQL Server 2000 Developer Edition的許可。
當你安裝了SQL Server 2000 Windows CE Edition后,你將同時得到ADOCE 3.1,最新的版本。我將用它和PC上最新版的ADO 2.6進行比較。
' Create objects Set laco = CreateObject("ADODB.Connection") Set lars = CreateObject("ADODB.Recordset")
' Open Connection laco.Open "Provider=SQLOLEDB;Data Source=SERVERNAME;" & _ "Initial Catalog=DBNAME;Trusted_Connection=Yes"
' Open Recordset lsSQL = "SELECT * FROM Article" lars.Open lsSQL, laco, adOpenForwardOnly, adLockReadOnly
' Clear list and get item rows Do While Not lars.EOF Set litm = lvwArticles.ListItems.Add(, , lars("Description").Value) litm.SubItems(1) = lars("Price").Value litm.SubItems(2) = lars("Stock").Value lars.MoveNext Loop
' Close Recordset and Connection lars.Close laco.Close 你在Pocket PC上將這樣做:
Dim litm As ListItem Dim laco As Connection Dim lars As Recordset Dim lsSQL As String
' Create objects Set laco = CreateObject("ADOCE.Connection.3.1") Set lars = CreateObject("ADOCE.Recordset.3.1")
' Open Connection laco.Open "Provider=Microsoft.SQLSERVER.OLEDB.CE.1.0;" & _ "Data Source=/DBNAME.sdf"
' Open Recordset lsSQL = "SELECT * FROM Article" lars.Open lsSQL, laco, adOpenForwardOnly, adLockReadOnly
' Clear list and get item rows Do While Not lars.EOF Set litm = lvwArticles.ListItems.Add(, , lars("Description").Value) litm.SubItems(1) = lars("Price").Value litm.SubItems(2) = lars("Stock").Value lars.MoveNext Loop
' Close Recordset and Connection lars.Close laco.Close
正如你看到的,在兩個例子中有一些較小的差別。比較明顯的是Connection對象的Open方法的連接字符串不同。假如你忽略Provider參數,ADOCE將假設你想訪問一個Pocket access數據庫文件。而SQL Server CE始終是作為一個文件名被引用。這種情況下,文件將被放置到設備的根目錄下,但是也可以被放置在你的應用程序目錄中(例如,Data Source=/Program Files/AppName/AppName.sdf)。
' Update Article If Not lars.EOF Then lars("Price").Value = 200 lars.Update End If 像在PC上一樣用SQL聲明(SELECT)來創建一個可更新Recordset是不可能的,你可以使用Find方法得到Recordset中想要的位置。
' Delete Article If Not lars.EOF Then lars.Delete 這里和更新的代碼非常像。請注重Find方法的結果集是一個只包含與搜索標準相匹配記錄的Recordset。這意味著你在PC和Pocket PC中會得到相同內容的Recordset。我說這個,是為了防止你想對Pocket PC上的Recordset做更多的事情,因為你打開了相同的表。
此外,你可以用一個SQL DELETE語句來做幾乎相同的事情:
laco.Execute "DELETE Article WHERE Description='Test'"