在本文中,将探讨如何利用.NET和UltraLite 10技术,创建一个运行在Windows Mobile设备上的数据库应用。将使用MobiLink 10技术来实现移动UltraLite数据库与中央数据库之间的数据交换。尽管MobiLink能够与大多数主流数据库进行同步(包括SQL Server、IBM DB2、Oracle和Sybase),但为了示例的简便性,将使用SQL Anywhere作为中央(合并)数据库。所有这些工具都包含在免费的SQL Anywhere 10 Developer Edition中。
要开始开发应用程序,需要以下工具:
在上一个教程中,创建了一个远程UltraLite数据库和针对Windows Mobile(WinCE)设备的移动.NET应用程序。请确保已经完成了该教程,以便能够熟练使用UltraLite数据库。
在本文中,不会详细介绍如何使用MobiLink设置数据复制,因为已经有大量优秀的文章和网络研讨会讨论了这个话题。在下载的项目中,有一个名为\db的子目录,其中包含一个名为start_ml.bat的批处理文件。执行此文件将创建一个新的SQL Anywhere中央数据库。它还将启动一个MobiLink服务器并将其连接到中央SQL Anywhere数据库。此时,MobiLink正在等待客户端同步请求。
现在中央数据库和MobiLink已经配置并启动,下一步是添加逻辑以从移动设备启动数据复制到MobiLink服务器(该服务器反过来请求中央SQL Anywhere数据库的数据)。打开上一个教程中创建的应用程序,并添加一个名为btnSync的按钮(如下图所示)。
C#
private
void
btnSync_Click(
object
sender, EventArgs e)
{
// 初始化数据复制
try
{
ConnUL.SyncParms.UserName =
"
user1"
;
ConnUL.SyncParms.Stream = ULStreamType.TCPIP;
ConnUL.SyncParms.StreamParms =
"
"
;
ConnUL.SyncParms.Version =
"
customer"
;
ConnUL.Synchronize();
}
catch
(System.Exception t)
{
MessageBox.Show(
"
同步错误: "
+ t.Message);
}
}
双击按钮以添加上述同步代码。
由于想要测试数据复制,需要启动模拟器并在模拟器和桌面之间建立一个实际的Active Sync连接。为此,请选择Tools | Device Emulator Manager。右键单击一个Windows Mobile5.0模拟器并选择Connect。
模拟器启动后,在桌面上打开Active Sync(Active Sync),然后选择File | Connection settings。启用"Allows Connections to one of the following:"并从下面的组合框中选择DMA,然后按OK。
在Device Emulator Manager中,右键单击所选模拟器并选择Cradle(如下图所示)。这应该会在模拟器上创建一个Active Sync连接。注意:如果遇到问题,请尝试在Active Sync应用程序中禁用DMA选项,然后再启用它。
现在有了Active Sync连接,可以部署移动应用程序。从Visual Studio中,将目标从"Windows Mobile5.0 Pocket PC Emulator"更改为"Windows Mobile 5.0 Pocket PC Device",然后选择Build | Deploy Solution。
应用程序成功部署后,在设备上打开File Explorer,切换到\Program Files\SimpleUL目录并单击SimpleUL应用程序。
此时,可以通过单击"Synchronize"按钮来启动与MobiLink服务器的连接。应该在MobiLink服务器窗口中看到几行记录,表明有5行数据已下载到移动设备。再次尝试同步。这次应该注意到没有行被下载,这是因为MobiLink只发送了新的数据更改。