SQL Server 2005 任务
在创建应用程序之前,必须在 SQL Server 2005 中配置发布。在下列步骤中,您将创建一个示例数据库,然后从该数据库发布数据。您将使用预建的脚本文件创建数据库,然后使用新建发布向导来创建发布。
创建数据库并在其中填充数据
准备服务器以发布数据
在创建发布之前,必须创建快照代理用户帐户,并创建一个将在其中存储快照文件的共享文件夹,准备服务器以进行发布。创建快照文件夹之后,该文件夹将用于服务器上的所有发布。如果以前已在此服务器上创建了发布,您可以跳过这些步骤。
创建快照用户帐户
创建快照文件夹
创建发布
设置权限
您必须为快照代理帐户和 IIS 匿名用户帐户授予权限。还必须将 IIS 匿名用户帐户添加到发布访问列表 (PAL) 中。
设置数据库权限
授予发布权限
创建发布快照
只有在创建发布快照之后才可对 SQLMobile 发布的订阅进行初始化。
创建发布快照
________________________________________________________________________________
配置 IIS 和 SQL Server 2005 以实现 Web 同步
既然已对 SQL Server 配置了一个发布,则必须使该发布可以通过网络供 SQL Server Compact Edition 客户端使用。SQL Server Compact Edition 可通过 IIS 连接到 SQL Server。即,创建虚拟目录并对其进行配置,从而允许客户端访问 SQL Server Compact Edition 服务器代理。
安装 SQL Server Compact Edition 服务器组件
配置发布以进行 Web 同步
________________________________________________________________________________
SQL Server Compact Edition 任务
如果在开发要使用 SQL Server Compact Edition 的应用程序之前预先创建 SQL Server Compact Edition 数据库和订阅,通常会节省大量时间。SQL Server Management Studio 允许您在本地计算机上创建并使用 SQL Server Compact Edition 数据库。然后,您可以在开发应用程序时使用此数据库。
创建新的 SQL Server Compact Edition 数据库
创建新的订阅
配置步骤为三步:创建发布-->web同步-->创建订阅
________________________________________________________________________________
生成应用程序
创建新的智能设备项目
添加引用
添加数据连接
选择要显示的数据
添加节点
在应用程序的代码页中,可添加包含数据库文件的路径和名称的字符串变量、用于删除数据库文件(如果已存在)的代码、用于创建与 SQL Server 发布的连接、同步数据和创建一个包含已发布数据的新本地数据库的代码。
添加代码
在解决方案资源管理器中,右键单击“Form1”,然后选择“查看代码”。
在代码页中,查找 Form1 的类定义。添加一个字符串变量,并赋值为 .sdf 文件的路径和文件名。Visual Studio 在先前步骤中创建的数据源需要数据库文件驻留在 \Program Files\ApplicationName 文件夹中,其中 ApplicationName 为应用程序的名称。例如,如果您命名了新项目 SQLMobile,则应将字符串变量设置为 "\Program Files\SQLMobile\sqlmobile.sdf"。
类定义的前几行应该与以下代码类似:
[C#]
复制代码
public partial class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
string filename = @"\Program Files\SQLMobile\sqlmobile.sdf";
public Form1()
{
InitializeComponent();
}
如果当前存在数据库文件,则将创建新方法将该数据库文件删除。这将确保应用程序在每次运行时加载最新的数据。此方法应该命名为 DeleteDB。此代码应该与以下代码类似:
[C#]
复制代码
private void DeleteDB()
{
if (System.IO.File.Exists(filename))
{
System.IO.File.Delete(filename);
}
}
创建名为“Sync”的执行同步的新方法。若要执行此操作,您将使用从前面步骤的“新建发布向导”中复制的代码。在粘贴代码后,必须对代码执行两项更改:
更改 SubscriberConnectionString 值,以便该值指向文件名变量中指定的正确路径和文件名。
将 AddOption 值从 ExistingDatabase 更改为 CreateDatabase。
更改完成后,Sync 方法应如下所示:
[C#]
复制代码
private void Sync()
{
SqlCeReplication repl = new SqlCeReplication();
repl.InternetUrl = @"/sqlmobile/sqlcesa30.dll">http://<computername>/sqlmobile/sqlcesa30.dll";
repl.Publisher = @"<computername>";
repl.PublisherDatabase = @"SQLMobile";
repl.PublisherSecurityMode = SecurityType.NTAuthentication;
repl.Publication = @"SQLMobile";
repl.Subscriber = @"SQLMobile";
repl.SubscriberConnectionString = @"Data Source='" + filename +
"';Password='';Max Database Size='128';Default Lock Escalation
='100';";
try
{
repl.AddSubscription(AddOption. CreateDatabase);
repl.Synchronize();
}
catch (SqlCeException e)
{
MessageBox.Show(e.ToString());
}
}
最后,在调用最新创建的两个方法的 Form1_Load 事件处理程序的开头添加代码。Form1_Load 事件处理程序应如下所示:
[C#]
复制代码
private void Form1_Load(object sender, EventArgs e)
{
DeleteDB();
Sync();
// TODO: Delete this line of code.
this.flightDataTableAdapter.Fill(this.sqlmobileDataSet.FlightData);
// TODO: Delete this line of code.
this.membershipDataTableAdapter.Fill(this.sqlmobileDataSet.MembershipData);
}
________________________________________________________________________________
部署并测试应用程序
部署应用程序