Pocket PC Phone Edition 的数据库开发 |
| 作者:microsoft 来源:microsoft 发布时间:2005-12-21 17:23:25 |
|
Andy Sjostrom 适用于: 摘要:学习如何使用 Pocket PC Phone Edition 工具集快速创建无线应用程序。本文将为您展示一个使用 Visual C# 和 SQL Server CE 2.0 创建的 Pocket PC Phone Edition 应用程序。如果您刚开始接触 .NET Framework 精简版,建议您访问 .NET Compact Framework Overview 白皮书(英文)。 一个新的移动计算时代开始了移动解决方案系统结构的各个部分正在快速地变为现实,并逐渐融合。更重要的是,许多公司越来越清楚地意识到移动解决方案能够带来很高的效率和新的商业机会。消费者也开始在日常生活中使用各种移动设备。移动设备硬件,特别是各种新式的 Pocket PC,正在引领时尚潮流,不断满足企业用户和消费者的需要。将各种事物紧密联系的关键是:新的软件和开发工具。 在过去几个月中,我使用了新的 Visual Studio .NET、Smart Device Extensions 和新的 SQL Server ™CE 2.0。将这些软件组件应用到各种 Pocket PC(如 Pocket PC Phone Edition)上,不但提高了开发效率,而且还促进了许多新的移动应用程序的开发。 SQL Server CE 的新功能从表面上看来,SQL Server CE 带来了某种矛盾。作为用于移动设备的本地数据库,SQL Server CE 支持断开连接的方案。在大多数情况下,在断开连接的 Pocket PC 上运行的 Pocket PC 应用程序都需要进行本地数据存储。SQL Server CE 还支持连接的方案,而且不论是从开发角度还是从带宽角度来看,它都提高了与远程服务器之间的数据传输效率。 以下是新版本的 SQL Server CE 的一些“闪光点”(当然,不是全部):
新的 SQL Server CE 2.0 Data Access Architecture 依赖于命名空间中的类:
由于 Data Access Architecture 已移至 .NET Framework 精简版中,其中包含的组件得以改进而且便于使用。例如,前面的 Merge Replication Initialize、Run 和 Terminate 架构已被一种方法替代,即 System.Data.SQLServerCE.Replication.Synchronize。此方法可以创建架构并在首次同步时下载数据,然后它强制上载修改后的数据,并在随后的同步过程中将其下载。 新的 Remote Data Access 类也有所改进,包括请求下载远程表索引的能力,以及为 Push 方法定义批处理模式的能力。我先为您介绍一个高尔夫记分牌应用程序示例,这个应用程序是用 SQL Server CE 2.0、Remote Data Access 和 Visual C# 创建的,然后再看一下它的代码。 示例应用程序:走过高尔夫球场示例应用程序 Golf Anyplace 能够在各种标准的 Pocket PC 上运行,而在实际的高尔夫球场中,由于 Pocket PC Phone Edition 内嵌了连接功能,因此具有更大的优势。Golf Anyplace 实际上就是一个数字记分牌,它可以跟踪您和其他球员的比分结果。其思想是每个高尔夫球员都使用一个 Pocket PC Phone Edition 来跟踪分数。由于每个人都能够将自己的分数强制上载到远程服务器,同时可以请求下载其他人的分数,因此可以持续关注比赛的进程。 这个应用程序的外观如下所示(抱歉,我不是用户界面设计人员): 主窗体用于输入您自己的分数,也可用于查看其他球员的分数。
图 1:输入您的分数 Synchronize 命令将本地数据强制上载到远程服务器,然后再请求下载所有的远程分数数据。
图 2:同步分数 您可以使用 View 窗体来查看比赛的详细信息和概要信息。
图 3:跟踪所有高尔夫球员 示例应用程序:预演代码让我们看一下代码。在代码的某些位置,您将看到我用不同的方法解决同一个问题。比如,如何进行类的初始化、是使用 DataReader 还是使用 DataSet、如何填充 ListView、是否使用 SQL Server CE 包装,等等。我希望这会对您有所帮助,因为在不同的情况下,各种解决方案各有千秋。请注意,您可以下载 Golf Anyplace 的示例代码(英文)。 启动Golf Anyplace 的启动对象是 GolfAnyplace.RDAGolf。以下就是构造函数逻辑在应用程序启动时所执行的操作: public RDAGolf()
{
InitializeComponent();
// 确保数据库存在!
SQLServerCEWrapper SSCEWrapper = new SQLServerCEWrapper();
bool NewDatabase = SSCEWrapper.CreateDatabase();
// 如果创建了新数据库,则执行第一次请求下载操作!
if(NewDatabase==true)
{
// 调用 Pull 而不保留本地数据! (没有任何数据!)
SSCEWrapper.Pull(false);
}
// 填充组合框
for(int iCounter=1; iCounter < 19; iCounter++)
this.cmbHole.Items.Add(iCounter.ToString());
// 将第一洞作为默认设置
this.cmbHole.SelectedIndex = 0;
}
您可以看到,我使用了一个 SQL Server CE 包装。这样做的目的是将与数据库相关的代码组织到一个位置。使用包装可以帮助我管理和使用本地数据库以及远程服务器同步。 以下是包装的前几行代码。 using System;
using System.Data;
using System.Windows.Forms;
using System.Collections;
using System.Data.Common;
using System.Data.SqlServerCe;
using System.Data.SqlClient;
namespace GolfAnyplace
{
public class SQLServerCEWrapper
{
public string InternetServer = "http://servername/directory/sscesa20.dll";
public string InternetUser ="DOMAIN\\user";
public string InternetPassword = "password";
p |
| [] [返回上一页] [打 印] |
|
文章评论 |



