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支持环境。

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