windows mobile开发循序渐进(4)移动应用程序的数据存储之本地数据存储第二篇
之所以分解來寫,是因為在寫的過程中會有些穿插的工作,希望能夠盡量寫的更細節一些。
上篇說的是本地存儲的XML和DataSet之間的交互,現在我們來看看windows mobile 是如何與數據庫進行交互的。
輕量級的SQL Server CE
由于windows mobile 5.0中包含了.Net compact framework組建,談到.Net平臺的數據存儲,我們首先想到的是ADO.NET,是的,在windows mobile設備訪問本地的數據庫使用的正是類似ado.net的一組操作類,從webcast上我找到了這樣的結構圖示
- .net compact framework managed stack
- visual studio .net
- ado.net
- sql server ce data provider
- .net compact framework runtime
- ole db for windows ce
- sql server ce???????????????????????? data provider
從這個結構可以看出,其實這和windows form應用程序的訪問數據庫架構幾乎一模一樣,這樣的話我們就可以很簡單的來使用這些組件訪問數據庫了。
windows mobile 5.0中帶的數據庫是SQL Server CE,這是一個輕量級的數據存儲組件。其數據庫的存在形式是一個單獨的文件(如:northwind.sdf),你可以直接在模擬器中打開,打開方式默認是在sql server ce中打開,界面類似于SQL Server 中的查詢分析器,如下圖:
可以在這里輸入查詢命令
?
這里是查詢結果窗口
?
了解了這些之后,我們看看windows mobile 上的應用程序是如何訪問 SQL Server CE 的
移動應用程序與SQL Server CE之間的交互
同我們熟悉的sqlconnection,sqlcommand,sqldataadapter一樣,我們同樣可以使用這樣一組類來提供應用程序和數據庫之間的交互。
這里我打算做一個任務管理來體驗windows mobile開發,因此建立了一個數據庫如下
如何建立此數據庫?可以在 visual studio 2008中的服務器管理器中連接到windows mobile的SQL Server CE
選擇更改數據源,在更改數據源選項中選擇Microsoft SQL Server Compact 3.5
選擇ActiveSync連接的設備就能連接到windows mobile 5.0模擬器了,這里我們可以選擇創建或打開已有的數據庫,并設置密碼,當然這里可以選擇數據庫存放的路徑位置等。
數據庫建立完成后我們便可以在應用程序中訪問數據庫了,
如上圖所示我建立了一個TaskList項目,并寫了一個簡單的數據操作類完成插入和提取數據的功能。
?
代碼 using?System;?using?System.Linq;?
using?System.Collections.Generic;?
using?System.Text;?
using?System.Data;?
using?System.Data.SqlServerCe;?
namespace?MyMobileTaskList?
{?
????class?DB?
????{?
????????public?static?string?ConString?=?"Data?Source=MyTask.sdf";?
????????public?static?DataTable?GetDataSet(string?strSql)?
????????{?
????????????SqlCeConnection?con?=?new?SqlCeConnection(ConString);?
????????????con.Open();?
????????????SqlCeDataAdapter?sda?=?new?SqlCeDataAdapter(strSql,?con);?
????????????DataSet?ds?=?new?DataSet();?
????????????sda.Fill(ds);?
????????????con.Close();?
????????????return?ds.Tables[0];????????????
????????}?
????????public?static?void?InsertData(string?strSql)?
????????{?
????????????SqlCeConnection?con?=?new?SqlCeConnection(ConString);?
????????????con.Open();?
????????????SqlCeCommand?cmd?=?new?SqlCeCommand(strSql,?con);?
????????????cmd.ExecuteNonQuery();?
????????????con.Close();?
????????}?
????}?
}
?
?
在AddTask.cs窗體中我們這樣就可以直接調用了
窗體:
?
代碼 ??? public?partial?class?AddTask?:?Form?????{?
????????public?AddTask()?
????????{?
????????????InitializeComponent();?
????????}?
????????private?void?btnAdd_Click(object?sender,?EventArgs?e)?
????????{?
????????????string?strInsert?=?"?insert?into?tasklist(date,place,event)?values?('"?+?Convert.ToDateTime(?this.txtTime.Text)?+?"','"?+?this.txtPlace.Text?+?"','"?+?this.txtTask.Text?+?"')?";?
????????????DB.InsertData(strInsert);?
????????????//localhost.Hello?webs?=?new?MyMobileTaskList.localhost.Hello();?
????????????MessageBox.Show("任務添加成功!");?
????????}?
????}
?
?
用來顯示數據的窗體TaskList.cs的代碼
?
代碼 public?partial?class?TaskList?:?Form?????{?
????????public?TaskList()?
????????{?
????????????InitializeComponent();?
????????????this.dataGrid1.DataSource?=?DB.GetDataSet("select?*?from?tasklist");?
????????}?
?????}
?
?
寫到這里其實已經可以順利訪問數據庫了,但是我這里還有個小問題,就是運行后在顯示數據的這個界面點擊時反應特別慢,甚至卡死。
請了解的朋友告知一下。
總結
以上是生活随笔為你收集整理的windows mobile开发循序渐进(4)移动应用程序的数据存储之本地数据存储第二篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 港湾命令行 配管理IP
- 下一篇: 邮件实用技巧一:如何让你的邮件畅通全球