WINDOWS MOBILE 手機軟件入門

 所先申明,我也是剛接觸,如果有錯誤的地方,歡迎指證。

當我們接觸一樣新東西時,總會遇到很多其實很簡單的問題,如果沒有人指導,就會卡在那裏。剛開始我也遇到了幾個問題,浪費了兩天,如果有人指導,也就幾分鐘的事。寫這篇的目的,就是希望想學編寫手機軟件的人不要像我一樣,走了很多彎路。

這裏假定你已經是.net程序員。

語言C#,運行環境 .NET Compact Framework 2.0(當前最高版本3.5)
WINDOWS MOBILE 5.0/6.0的系統已經自帶.NET Compact Framework 2.0,所以不要再裝其它東西就能直接運行 .NET Compact Framework 2.0 程序。

首先,寫個"hellow world"。這個很簡單,誰都會。打開VS2008(2005應該差不多),新建項目- Visual C# - 智能設備 - 智能設備項目 - 智能設備應用程序(注意選擇.NET Compact Framework版本2.0),在界面上放一個按妞,按妞事件裏彈出一個消息"hellow world",跟寫Winform程序是一樣的,很簡單。然後生成,複製到WINDOWS MOBILE系統的手機裏,就可以運行了。

上面這些都沒什麼問題,下面問題就來了。

接下來我們要考慮的就是數據庫了。用什麼數據庫?剛接觸當然都不知道。找資料。大型的需要同步遠程數據的還是SQL SERVER,對於我們的小程序,當然用不上。在MSDN上找到的是 SQL SERVR CE,類似於WINForm 用 ACCESS數據庫(當然WINDOWS MOBILE裏不能用ACCESS數據庫),VS2008裏帶的是3.5版本。如果數據比較少的可以用XML。

在VS裏新建一個名爲"test.sdf"的SQL SERVR CE數據庫,把它放在bin目錄裏。項目裏添加引用System.Data.SqlServerCe.dll。連接字符串:Data Source=test.sdf;encryption mode=platform default;Password='xxx';照理說這樣應該是正確的,如果在手機裏運行,這個連接字符串確實是正確的。但是在電腦上調試的時候會發 現,始終提示找不到數據庫"test.sdf".好吧,我們把數據庫路徑改成完整路徑:Data Source=c:/..../test.sdf;.....調試還是找不到數據庫。這個地方困擾了我好久。在網上找了許多資料,MSDN裏的例子也是按 第一種那樣寫,但也發現了另一種寫法: Data Source=system.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly ().GetName().CodeBase)/test.sdf;....。
system.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) 意思是取得當前程序所在的目錄。我這樣寫了,調試還是提示找不到數據庫!我就納悶了。去CSDN裏看,也有很多人問這個問題,但是沒有找到一個解決辦法, 大家的回答都是上面的第三種寫法。

於是我做了個測試:
在程序裏用以下代碼創建了一個數據庫
string connString = "Data Source='Test22.sdf'; LCID=1033; Password=/"1/"; Encrypt = TRUE;";
SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();

MessageBox.Show(File.Exists("Test22.sdf").ToString());//這裏彈出的的是true
MessageBox.Show(fi.DirectoryName);//這裏彈出的路徑是:Test22.sdf

在bin目錄裏找不到Test22.sdf數據庫,在整個電腦裏搜索文件Test22.sdf,居然也沒找到!
到現在也沒明白,它到底是怎麼一回事。然後我後面就做不下去了,卡在這了。到處找資料,也沒找到解決辦法。鬱悶了一天。
後面一個偶然的機會,把test.sdf放在項目文件夾根目錄並把它包含到項目裏來,調試居然可以了!(這麼重要的一句,CSDN裏爲什麼都沒有人說出來呢- -)

然後,把調用數據的程序複製到手機上執行.發現還是出錯了,提示找不到 sqlceme35.dll 什麼什麼的。這是因爲手機上沒有安裝SqlServerCe 3.5支持環境。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章