結合前幾日開發的《全國大壩基礎資料庫采集端》中的pda程式開發過程,對vs2008開發智能裝置上的程式做個小總結。
1
程式結構
程式中包括四個部分:
1. 系統配置
這個部分用來配置系統中的相關參數,參數包括資料庫資訊和序列槽的配置資訊。這部分的主要技術是xml檔案的讀取和寫入。
2. 資料下載下傳
從資料庫中下載下傳資料到pda,pda上的儲存也是使用資料庫。這部分的技術主要是pda裝置上的移動資料庫開發和使及用pda連接配接pc資料庫
3. 資料上傳
把pda上的資料上傳到pc資料庫中,使用的技術和2相同。
4. gps資料擷取
通過外置藍牙gps子產品擷取當時所在位置的經緯度,并将經緯度儲存在pda上的移動資料庫中。涉及到的技術有序列槽資料的讀取,gps資料的解析。
2 開發環境
軟體環境: visual studio 2008
pc資料庫: sql server
智能裝置: windows mobile 6
3
建立工程3.1 建立項目
建立工程的過程和vs建立其他工程步驟相同,通過vs2008中的菜單“檔案-建立-項目 ”,建立一個新項目。
vs2008已經內建了智能裝置的開發環境,根據開發語言的不同,在不同的開發語言樹中選擇“智能裝置”,下方的名稱中填寫項目名稱,點選“确定”按鈕,就建立了一個智能裝置的程式項目。
3.2 建立調試環境
vs2008中已經包括了智能裝置的仿真程式,編寫的程式可以通過pc機上的仿真程式進行調試,不必在pda上逐個調試程式。
建立項目後,通過菜單“項目--項目屬性”中的“裝置”頁中設定調試内容。
在下拉框中,選擇目标裝置的類型。類型的選擇要根據pda的作業系統進行确定,pda上如果是中文作業系統,請選擇“chs”打頭的選項。具體如何選擇,請根據pda的作業系統進行。如果對選項中的内容不了解,請查閱其他資料。
仿真程式的選擇和設定不僅僅隻有這一種方式,也可以通過vs2008中的“工具-裝置仿真器管理器”進行設定。
3.3
繪制窗體
智能裝置的窗體和windows視窗的差别不是很大。在工程中選擇添加窗體後,vs中出現pda螢幕模樣的模闆。需要什麼功能,在工具箱中把對應的控件拖到模闆上即可。這部分的開發和普通的windows程式開發沒有什麼不同。
不同的部分就是菜單。智能裝置的菜單中有預設菜單,就是在螢幕底部有個菜單控件,可以通過增加菜單項的方式增加菜單。需要注意的是,一級菜單隻能有兩個,而且設定的時候,隻能先設定左邊的菜單項内容,才能設定右邊菜單項内容。
控件的使用也是有嚴格限制的。vs2008中能使用的控件分布在工具箱的“所有裝置控件v、“公共裝置控件 v、“裝置容器
v、“裝置菜單和工具欄v、“裝置資料v、“裝置元件v、“裝置對話框v。使用控件的方式和windows窗體的設計沒有什麼不同。
4
調試
調試程式的方式同普通的程式調試差别不大,也通過單步調試等等的功能。唯一的差别就在于調試中程式在仿真器中運作。
4.1 其他檔案
在調試中,程式如果隻有一個exe檔案,而不涉及到其他檔案,可以直接在仿真程式中運作。但是如果程式還有其他檔案的話,需要把檔案也要部署到pda仿真器上。如何部署其他檔案,請參考下面步驟:
1. 通過仿真器上的菜單“檔案――配置…”菜單設定共享檔案夾。
通過後面的按鈕,浏覽電腦中的磁盤,并選擇恰當的目錄。“共享檔案夾”在設定完成後,将作為pda仿真器的擴充存儲空間,仿真器中共享檔案夾被命名為“storage
card”。那麼在仿真器中就可以直接操作共享檔案夾中的檔案。
這時候,就可以把其他和程式相關的檔案拷貝到需要的地方。下面以一個xml檔案為例。這個xml和程式的可執行程式在一個目錄下,用來儲存程式的設定參數。xml檔案在電腦上,程式中通過讀取可執行程式所在的目錄來指定xml檔案的目錄。但是很不幸,仿真器在運作過程中,認為exe可執行程式在“program
files\\項目名稱”這個目錄下,這個目錄是仿真器中的路徑,肯定是不會找到xml檔案的。這就需要把xml檔案也放置到“program
files\\項目名稱”目錄下面去。
在仿真器中點選“開始-資料總管”,打開後選擇“storage
card”。在這個裡面通過目錄-檔案的方式選中檔案,然後點選下面的“菜單-編輯-複制”,将檔案複制出來。
然後通過仿真器界面上的檔案-目錄功能,找到“我的裝置-program
files-項目名稱”,進入以項目名稱為名稱的目錄,通過“檔案-編輯-粘帖”,把檔案拷貝到可執行程式所在的運作目錄下。
5 移動資料庫
在這個項目中,使用的是微軟的sql server mobile compact editor 3.5。其他的資料庫還沒有使用過。僅僅就sql server
mobile compact editor 3.5的使用方法說明。
5.1 獲得sql server mobile
compact editor 3.5
sql server mobile compact editor 3.5可以直接從微軟的網站上下載下傳,網址為:
下載下傳後在電腦上進行安裝。預設安裝到c:\program files\microsoft sql server compact edition下。
3.5版本為最新版,增加了設定資料庫檔案密碼的功能。也可以使用其他版本的sql server mobile替代。
5.2
在sql server manager studio中使用sql server mobile
在登入部分,伺服器類型選擇“sql server
mobile”,資料庫檔案通過下拉框中的“浏覽更多…”選擇建立的資料庫檔案,也可以通過選擇窗體中的“建立資料庫”建立新的資料庫。
輸入資料庫密碼,即可登入到sql server mobile資料庫中。需要說明的是,3.5版本建立的資料庫,在sql server manage
studio 2005中可能無法登入。
5.3 sql server
mobile資料庫中建立資料表
sql server mobile中建表可以通過sql server manage studio
2005中的建表向導進行建表,也可以通過sql語句進行建表。建表的時候需要注意字段類型和sql server中的字段類型并不相同,在sql
server中能使用的字段類型,在sql server mobile中可能無法使用,在建表的過程中需要注意這點。
5.4
在智能裝置上部署sql server mobile資料庫
把建好的資料庫檔案通過4.1中描述的方式,拷貝到相應的仿真器目錄下。這時候仿真器就可以連接配接并操作sql server mobile資料庫了。
但是如果使用pda通路sql server mobile,注意windows
mobile中不包含資料庫引擎,需要額外的安裝四個包。如果不安裝這四個包,程式将無法連接配接和讀取sql server mobile資料庫。
這四個包在sql server mobile安裝目錄下,具體的是c:\program files\microsoft sql server compact
edition\v3.5\devices\wce500\armv4i目錄下面,包括:
sqlce.dev.chs.ppc.wce5.armv4i.cab
sqlce.ppc.wce5.armv4i.cab
sqlce.repl.ppc.wce5.armv4i.cab
sqlce.wce5.armv4i.cab
将這四個檔案拷貝到仿真器上,并安裝。
安裝後,pda的程式中增加了三個程式: sqlservercompact 3.5 repl
sqlservercompact 3.5 tools cn
sqlservercompact 3.5 core
當不用移動資料庫時,可以解除安裝這三個程式。
6
智能裝置連接配接操作pc資料庫
智能裝置操作pc資料庫,有兩種方式:
一種是通過無線連接配接,一種是通過usb連接配接到電腦上。無線連接配接在普通環境下使用普遍性不足,很多情況下是通過usb資料線進行連接配接的。使用usb資料線連接配接,pc電腦上需要安裝同步工具,目前使用較多的為微軟的activesync,下載下傳位址是;
智能裝置和pc同步後,就可以把智能裝置看作一台電腦,可以連接配接資料庫。
7
資料庫連接配接字元串7.1 sql server mobile
在工程中增加引用,引用system.data.sqlserverce
類中使用命名空間:system.data.sqlserverce
資料庫連結類名、指令類名及記錄集類名中都使用包含ce的類。
具體代碼如下:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.text;
using system.windows.forms;
using system.data.sqlserverce;
using system.data.sqlclient;
namespace gpsdatareader
{
public partial class frmdamup : form
{
sqlceconnection connmobile;
sqlcecommand command;
public frmdamup()
{
initializecomponent();
}
private void frmdamup_load(object
sender, eventargs e)
//擷取可執行程式所在目錄和資料庫檔案
string
sfilepath =
system.io.path.getdirectoryname(system.reflection.assembly.getexecutingassembly().getname().codebase)
+ "";
//連接配接sql server
mobile資料庫的連接配接字元串
connstr = "data source=" + sfilepath + ";persist security
info=false;password=admin;";
//建立連結
connmobile
= new sqlceconnection(connstr);
try
{
connmobile.open();
}
catch
(exception ex)
messagebox.show("不能正确連接配接移動資料庫!" + ex.message);
this.close();
command =
new sqlcecommand();
command.connection = connmobile;
sqlstr = "select * from daminfo where isup=‘1‘";
command.commandtext = sqlstr ;
sqlcedatareader rs = command.executereader();
while
(rs.read())
listviewitem lv_item = new listviewitem();
lv_item.text = rs["rsid"].tostring();
lv_item.subitems.add(rs["rsnm"].tostring());
lv_item.subitems.add(rs["dmprv"].tostring());
lv_item.subitems.add(rs["dmct"].tostring());
lv_item.subitems.add(rs["dmtw"].tostring());
lv_item.subitems.add(rs["el"].tostring());
lv_item.subitems.add(rs["nl"].tostring());
lv_item.subitems.add("未上傳");
lv_daminfo.items.add(lv_item);
rs.close();
if
(lv_daminfo.items.count == 0)
messagebox.show("沒有需要上傳的資料!");
7.2 智能裝置連接配接pc上的sql
server
智能裝置不支援oledb連接配接方式,隻能使用sqlserver
.net的連接配接方式。是以增加system.data.sqlclient引用。在需要連接配接的類中增加system.data.sqlclient命名空間。
代碼如下:
private void b_down_click(object sender, eventargs e)
string sqlstr;
string connstr = "user
id=sa;password=2centit13;initial catalog=dambase;server=" + configinfo.ip +
";connect timeout=30";
sqlconnection conn = new sqlconnection(connstr);
conn.open();
messagebox.show("無法連接配接到指定的pc資料庫!" + ex.message);
return;
}
《===========================================================》
接觸之後才發現,原來wince是本來就有這種項目。