所先申明,我也是剛接觸,如果有錯誤的地方,歡迎指證。
當我們接觸一樣新東西時,總會遇到很多其實很簡單的問題,如果沒有人指導,就會卡在那裏。剛開始我也遇到了幾個問題,浪費了兩天,如果有人指導,也就幾分鐘的事。寫這篇的目的,就是希望想學編寫手機軟件的人不要像我一樣,走了很多彎路。
這裏假定你已經是.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支持環境。
WINDOWS MOBILE 手機軟件入門
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.