演练:使用数据源配置向导创建偶尔连接的应用程序

本演练提供在运行数据源配置向导时通过合并 Synchronization Services 来开发偶尔连接的应用程序的分步说明。

“偶尔连接的应用程序”是可能不总是访问远程数据的应用程序。 因为这些应用程序并不总是访问远程数据,所以它们使用位于客户端的本地数据库中的数据,并会定期同步远程数据库中的数据和本地数据库中的数据。 Microsoft Synchronization Services for ADO.NET(Microsoft.Synchronization.Data 命名空间)帮助实现本地数据库和远程数据库之间的数据同步。 最初可通过以下方法来创建此同步:使用**“添加新项”对话框向应用程序中添加本地数据库缓存;或者运行“数据源配置向导”**。 在本演练中,您将采用后一种方法。

在本演练中,您将要执行以下任务:

  • 创建新的 Windows 窗体应用程序。

  • 运行**“数据源配置向导”**创建和配置具有本地数据库缓存的类型化数据集。

  • 创建一个用来显示数据并确认同步的 Windows 窗体。

  • 添加代码以启动数据库间的同步。

  • 添加消息框以显示已同步的记录的数目信息。

系统必备

若要完成本演练,需要以下项:

  • 访问 Northwind 示例数据库的 SQL Server 版本。 有关更多信息,请参见 如何:安装示例数据库

  • SQL Server 压缩运行 Visual Studio 的计算机上安装。

创建 Windows 窗体应用程序

由于您将要在 Windows 窗体中显示数据(以验证同步是否成功),所以本演练的第一步是创建新的 Windows 窗体应用程序。

备注

以下说明中的某些 Visual Studio 用户界面元素在您计算机上的名称或显示位置可能有所不同。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置

创建新的 Windows 窗体应用程序

  1. 从**“文件”**菜单创建一个新的项目。

  2. 将项目命名为“OCSWalkthrough2”。

  3. 单击**“Windows 窗体应用程序”模板,然后单击“确定”**。 有关更多信息,请参见 开发客户端应用程序

    将会创建 OCSWalkthrough2 项目并将其添加到**“解决方案资源管理器”**中。

创建包括本地数据库缓存的数据源

由于本演练演示如何使用**“数据源配置向导”**来将 Synchronization Services 合并到应用程序中,因此下一步是启动该向导。 此步骤启动该向导并创建一个基于 Northwind 示例数据库中 Customers 表的数据集。 在选择要添加到数据集内的数据库表时,将选中启用本地数据缓存的选项。

创建包括本地数据库缓存的数据源

  1. 在**“数据”菜单上,单击“显示数据源”**。

  2. 在**“数据源”窗口中,单击“添加新数据源”**启动数据源配置向导。

  3. 在**“选择数据源类型”页上,使默认值“数据库”保持选中状态,然后单击“下一步”**。

  4. 在**“选择您的数据连接”**页上执行下列步骤之一:

    • 如果下拉列表中包含到 SQL Server 版 Northwind 示例数据库的数据连接,请选择该连接。

      - 或 -

    • 单击**“新建连接”打开“选择数据源”“添加/修改连接”**对话框并新建与 SQL Server 版 Northwind 数据库的连接。 有关更多信息,请参见“添加/修改连接”对话框(通用)

  5. 如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。

  6. 在**“将连接字符串保存到应用程序配置文件中”页上单击“下一步”**。

  7. 在**“选择数据库对象”页面上展开“表”**节点。

  8. 选择**“Customers”**表。

  9. 选中**“启用本地数据库缓存”**。

  10. 在**“选择数据库对象”页上单击“下一步”**。

  11. 在**“选择要缓存的表”页上选择“Customers”**。

    备注

    “同步模式”保留默认值“增量”。增量模式仅同步自上次同步以来在服务器上进行的更改。快照模式会用服务器上的当前表替换本地缓存的整个表。无论您选择哪种模式,都会首先将整个表加载到本地数据库缓存中,以便您始终从当前数据的完整集合开始。

  12. 单击**“完成”**。

  13. 如果某个本地缓存表的同步模式设置为**“首次同步之后的新更改和增量更改”,则需要对 SQL Server 数据库进行更新,而且会打开“生成 SQL 脚本”**对话框。 默认情况下,该对话框中的两个选项均处于选中状态:

    • 为增量更改更新服务器。 选中该选项可自动更新服务器,以便在关闭该对话框之后立即启用增量同步。

    • 在项目中保存 SQL 脚本供以后使用。 选中该选项可将所生成的 SQL 脚本添加到项目中,以便可以在以后针对 SQL Server 数据库执行它们。 还会生成撤消脚本并将它们添加到项目中。

  14. 单击**“确定”**。

在应用程序中启用同步

在完成先前步骤中数据源配置向导的运行之后,数据同步即配置完毕。 现在,您的应用程序中包含以下内容:

  • 本地版本的 Northwind 数据库 (Northwind.sdf)。

  • 数据同步设置文件 (NorthwindCache.sync)。

  • 由数据源配置向导生成的类型化数据集 NorthwindDataSet.xsd。 它包含用本地数据库填充其数据的 Customers 表。

    将运行初始同步,而且会将本地数据库缓存中的 Customers 表与服务器数据库同步。 换句话说,本地 SQL Server 压缩数据库 (Northwind.sdf) 中的客户表与客户表中的服务器上的数据库中的当前数据填充。

  • 一个包含脚本的 SQLScripts 文件夹,这些脚本可用于创建跟踪服务器变化的跟踪列、已删除项表和必要的触发器。

  • 一个包含脚本的 SQLUndoScripts 文件夹,这些脚本可用于移除已添加到服务器中的跟踪列、已删除项表和必要的触发器。

    备注

    只有在有必要在服务器上进行修改时,才会创建 SQL 脚本。如果服务器已经具有已删除项表和跟踪列,将不会创建任何脚本。

  • 对以下 Microsoft Synchronization Services for ADO.NET DLL 的引用:

    • Microsoft.Synchronization.Data

    • Microsoft.Synchronization.Data.Server

    • Microsoft.Synchronization.Data.SqlServerCe

为应用程序添加同步功能

配置完数据同步后,您还必须将同步功能添加到应用程序中。 具体而言,您必须添加用来启动同步过程的代码。 将在窗体中添加一些控件来显示数据并启动同步进程。

首先,通过将**“Customers”节点从“数据源”**窗口拖到窗体中,来添加 DataGridView 控件。 DataGridView 将显示本地数据库缓存(位于项目中的 Northwind.sdf 数据库)中的 Customers 表,以便验证本地数据库和远程数据库之间是否在进行数据同步。 还可以添加一个按钮以启动同步进程。

创建数据绑定窗体以启动并验证数据同步

  1. 将**“Customers”节点从“数据源”窗口拖动到“Form1”**上。

  2. 将一个**“按钮”控件从“工具箱”拖到“Form1”中。 将此按钮的“Name”属性设置为 SynchronizeButton,并将它的“Text”**属性设置为“Synchronize Now”。

  3. 双击**“立即同步”**按钮以创建按钮单击事件处理程序,并在代码编辑器中打开该窗体。

  4. 添加代码以启动同步进程,然后在数据集中重新填充“Customers”表。 事件处理程序中的代码应与下面的代码类似:

    备注

    声明 syncStats 变量的代码行将在本文档的稍后部分进行介绍。

    ' Call the Synchronize method to synchronize
    ' data between local and remote databases.
    Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = _
        syncAgent.Synchronize()
    
    ' After synchronizing the data, refill the
    ' table in the dataset.
    Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
    
    // Call the Synchronize method to synchronize
    // data between local and remote databases.
    NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats;
    syncStats = syncAgent.Synchronize();
    // After synchronizing the data, refill the
    // table in the dataset.
    this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
    

测试应用程序

测试应用程序

  1. 按 F5。

  2. 运行应用程序时,使用**“服务器资源管理器”/“数据库资源管理器”**(或其他数据库管理工具)连接到远程服务器数据库并修改某些记录。

    1. 在**“服务器资源管理器”/“数据库资源管理器”**中,查找远程数据库服务器(不是到 Northwind.sdf 的连接)上的 Customers 表。

    2. 右击 Customers 表,然后单击**“显示表数据”**。

    3. 修改一条或多条记录,然后提交更改。 (导航关闭已修改的行。)

  3. 返回到窗体,然后单击**“立即同步”**。

  4. 验证对远程数据库的修改是否已同步到本地数据库并显示在窗体上。

  5. 关闭窗体。 (停止调试。)

检索同步信息

调用**“同步”**方法时,该方法并不仅仅启动同步进程。 **“同步”方法还会返回“SyncStatistics”**对象,您可以从该对象访问有关同步的信息。

访问同步统计信息

  • 在代码编辑器中打开**“Form1”**,然后在 SynchronizeButton_Click 事件处理程序的末尾处,接着先前步骤所添加的代码添加以下代码:

    MessageBox.Show("Changes downloaded: " & _
    syncStats.TotalChangesDownloaded.ToString)
    
    MessageBox.Show("Changes downloaded: " +
        syncStats.TotalChangesDownloaded.ToString());
    

测试应用程序

测试应用程序

  1. 按 F5。

  2. 运行应用程序时,使用**“服务器资源管理器”/“数据库资源管理器”**(或其他数据库管理工具)连接到远程服务器数据库并修改某些记录。

    1. 在**“服务器资源管理器”/“数据库资源管理器”**中,查找远程数据库服务器(不是到 Northwind.sdf 的连接)上的 Customers 表。

    2. 右击 Customers 表,然后单击**“显示表数据”**。

    3. 修改一条或多条记录,然后提交更改。 (导航关闭已修改的行。)

  3. 返回到窗体,然后单击**“立即同步”**。

  4. 此时,将显示一个包含已同步记录的信息的消息框。

  5. 验证对远程数据库的修改是否已同步到本地数据库并显示在窗体上。

后续步骤

根据应用程序的要求,当在应用程序中配置本地数据库缓存后,可能还需要执行其他一些步骤。 例如,您可以对此应用程序进行以下增强:

请参见

任务

演练:将偶尔连接的客户端应用程序与本地数据库一起部署

概念

偶尔连接的应用程序概述

SQL Server Compact 4.0 和 Visual Studio