用C 開發Pocket PC資料庫應用程式

2021-09-05 14:49:32 字數 3935 閱讀 7261

摘要:本文講解怎樣使用pocket pc phone edition工具集迅速建立無線資料庫應用程式。本文介紹的是使用visual c# 和sql server ce 2.0建立乙個pocket pc phone edition應用程式。

新的移動計算時代開始了

移動解決方案系統體系結構的一部分正在迅速成為現實。最先是很多公司不斷意識到移動解決方案可以帶來效率的提高和新的商業機會。顧客正在每天的生活中開始看到移動裝置的使用。移動裝置硬體,特別是新的pocket pc,正在引領企業和顧客需求的方向。把每種需求膠合在一起的關鍵就是新的軟體和開發工具。

我使用新的visual studio .net、smart device extensions和新的sql server? ce 2.0工作了幾個月時間。這些軟體元件與連線的(connected)pocket pc,例如pocket pc phone edition,提高了開發效率並且已經驅動了很多新的移動應用程式。

sql server ce的新特性

總的來說,sql server ce反映了一種矛盾。作為移動裝置的本地資料庫,sql server ce支援不連線的環境。在大多數情況中,沒有 網路

連線的pocket pc上執行的pocket pc應用程式需要本地資料儲存。sql server ce也支援連線的環境,並且使資料向遠端伺服器或從遠端伺服器傳遞效率很高,無論是從開發還是從頻寬來看。

下面是sql server ce的部分特性:

·為本地的sql server ce管理和遠端的sql server連線與.net緊湊框架元件整合。

·連線安裝嚮導使sql server ce元件的安裝簡化。

·大量的內部函式,包括很有價值的newid、char、charindex、unicode、len、ltrim、rtrim、space、 substring、identity、datalength等等。

·聯合(union,例如select * from orders union select * from oldorders)

·使用遠端資料訪問牽引(remote data access pull)從遠端伺服器表索引得到資料的能力。

·改良的sql server查詢分析器(query analyzer)。

新的sql server ce 2.0資料訪問結構依賴下面名字空間中的類:

·system.data.sqlserverce(使用合併複製和遠端資料訪問管理本地資料庫和遠端伺服器連線)。

·system.data.sqlclient(管理遠端資料庫並且包含對tsql和儲存過程的支援)。

新的遠端資料訪問(remote data access)類也有一定的改良,包含了從遠端表索引取得資料的能力和為push方法定義批處理模式(batch-mode)的能力。我將介紹乙個"高爾夫得分卡"示例應用程式,它是使用sql server ce 2.0、 遠端資料訪問和visual c#建立的。

示例應用程式:介面

下面是一些介面:

主窗體用於輸入自己的得分。它也可以用於檢視其它玩家的得分。

圖1.輸入自己的得分

圖2.同步分數

你可以使用view窗體檢視細節和整個比賽的情況。

圖3.保持跟蹤其它的玩家

示例應用程式:**

下面我們看一看**。在**的某些位置,你可能注意到我使用不同的方法解決同乙個問題。這些例子包括我怎樣著手類的初始化,使用datareader還是dataset,填充listview,是否使用sql server ce包裝等等。我希望這能對你有些幫助,某個方案在某種情況下工作得很好,在其它的環境中可能另乙個方案更好。

啟動

golf anyplace的啟動物件是golfanyplace.rdagolf。下面是當啟動應用程式時構造邏輯執行的操作:

你可以看到我實現了sql server ce包裝。我是通過把與資料庫相關的**寫到同乙個位置實現的。該包裝幫助我管理並與本地資料庫一起工作,以及遠端資料庫同步。下面是該包裝的前面幾行**:

using system; using system.data; using system.

windows

我使rda屬性共享的唯一原因是當我在應用程式的其它部分演示datareader時需要它。實際上rda屬性應該是私有的,這樣就能與應用程式的其它部分保持一致,並且可以自該包裝傳遞乙個dataset。

下面是該包裝的createdatabase和pull方法:

public bool createdatabase() else

如果資料庫不存在,createdatabase方法就建立乙個新資料庫。

注意我給pull方法傳遞了乙個布林變數。如果本地已經存在某個表,那麼把遠端伺服器表的內容傳遞到本地sql server ce表是無法做到的,因此傳遞前必須執行乙個drop table語句。該布林變數用於控制第一次向伺服器傳遞資料時是否保持本地資料。你也可以看到push方法的新的批處理引數。在本例中我使用了batchingoff,這意味著我不認為提交到伺服器的行是批處理的,而那意味著要麼全部完成要麼什麼也不作。另乙個可以的選項是batchingon。你可以看到,我使用了sqlcecommand來執行drop table。

伺服器上有什麼

在我們進一步深入該pocket pc應用程式源**前,我將解釋以下伺服器端有什麼內容。遠端伺服器是sql server 2000,執行著乙個叫golfanyplace的資料庫,該資料庫只有乙個表result。下面是該錶的定義:

create table [dbo].[result] ( [playername] [nvarchar] (50) not null , [hole] [smallint] not null , [result] [smallint] not null ) on [primary] go alter table [dbo].[result] with nocheck add constraint [pk_result] primary key clustered ( [playername], [hole], [result] ) on [primary]

填充listview

golfanyplace專案演示了兩種填充listview的方法:使用dataset和使用datareader。因為我選擇在sql server ce周圍實現包裝,所以最好使用dataset。dataset可以不連線,並且在不連線狀態下在類之間傳遞。因為datareader要求開啟到資料庫的連線,因此盡可能在開啟和關閉連線附近使用它。第乙個例子**顯示了怎樣通過在dataset迴圈填充乙個listview。

下面是填充listview的**:

下面是在包裝類中與之對應的**:

public dataset getplayerresult(string playername)

下面的示例**演示了怎樣使用datareader作相同的事情:

最後,注意我在專案中使用了乙個options窗體(圖4),需要一些附加的**來支援它。

圖4. sql server ce options窗體

技巧

下面是一些我希望與你共享的技巧:

·很好地設計介面。

·不能讓sql server ce**沒有try、catch和finally等適當的錯誤處理程式。

·如果你沒有pocket pc用於開發或者pocket pc沒有網絡卡,可以使用pocket模擬器。

·信任sql server ce連線嚮導,至少開始時信任。

·學習在internet上在何處查詢編碼問題的答案。

結論

visual studio .net、visual c#或visual basic .net與sql server ce 2.0一起工作時匹配得很好。希望你能從本文我提供的方法中學習到一些好的想法。

Pocket PC 2003開發入門資料庫操作

一般ce上面的資料庫程式都包括以下命名空間 包括與pc互動資料 這是從乙個專案的單元檔案裡面拷出來的,除錯環境 windows 2003 vs.net 2003 sql server 2000 sql server ce 2.0 pocket pc 2003 sdk 以下 中很多 號,是故意處理的,...

Pocket PC 2003資料庫操作

一般ce上面的資料庫程式都包括以下命名空間 包括與pc互動資料 這是從乙個專案的單元檔案裡面拷出來的,除錯環境 windows 2003 vs.net 2003 sql server 2000 sql server ce 2.0 pocket pc 2003 sdk 以下 中很多 號,是故意處理的,...

用c 鏈結資料庫

1.建立連線字串 string a data source initial catalog qq integrated security true 12.建立連線物件 sqlconnection connection new sqlconnection a 1執行乙個sql語句 1.將想要執行的sq...