移动设备数据访问技术一

1.偶尔连接的应用程序
  • “偶尔连接的应用程序”是一种使用远程数据库中的数据、但却不总是能够访问远程数据库的应用程序。
  • 虽然远程数据库可随时访问,但如果不断地从远程数据库查询那些很少发生变化的数据(如状态列表),则可能使
    效率很低,这时也可使用偶尔连接的应用程序。
  • 在这些情况下,应用程序可以使用位于客户端的本地数据库中存储的数据,并定期与远程数据库进行数据同步。
  • 此外,除了为需要偶尔连接的应用程序使用本地数据库缓存外,还可以考虑将很少变化或按照已知时间表更改的数
    据存储到本地数据库缓存中。

2.数据同步方式对比

3.使用Sync Services 同步数据   

  • 可以对缓存进行配置,以存储单个表、表集合、或从表查询到的特定记录
    (例如, 集合或从表查询到的特定记录例如拥有特定销售代表的客户)。
  • 客户端数据库与服务器数据库之间的数据同步是由Microsoft Synchronization
    Services for ADO.NET(Microsoft.Synchronization.Data 命名空间)实现的。
4.Synchronization Services API   
  • 命名空间:Microsoft.Synchronization.Data
  • Microsoft Synchronization Services for ADO.NET 是专为偶尔连接的应用程序设计的。
  • 可以通过双层、n 层和基于服务的体系结构,在异类源之间同步数据。
  • Synchronization Services API不仅复制数据库及其架构,而且提供了一组组件,可
    在数据服务和本地存储区之间同步数据。
5.安装Sync Services API 和文档
  • Synchronization Services API 不属于.NET Framework,而是SQL Server Compact 3.5 安装的一部分
    (默认情况下,安装Visual Studio 时会安装SQL Server Compact 3.5)。
  • 若要安装Synchronization Services 文档以便于本地使用,必须先从Microsoft Synchronizationy Services for ADO.NET Books Online
    (Microsoft Synchronization Services for ADO.NET 联机丛书)网站下载帮助集合。

6.在应用程序中配置数据同步
  • 本地数据库缓存使用SQL Server Compact 3.5 数据库在本地存储数据。
  • 可以将现有的SQL Server Compac t 3.5 数据库用作本地数据库缓存。
  • 如果还没有本地数据库,可以设置“配置数据同步”对话框,以创建一个新的本地数据库。
  • 在向应用程序中添加本地数据库并完成配置数据同步对话框的设置后,还必须向应用程序中添加启动同步的代码。
  • 成功同步数据后,还必须添加代码,以便从本地数据库重新填充数据集中的表。
7.“配置数据同步”对话框 
  • “配置数据同步”对话框仅可用于为下载方案配置Microsoft Synchronization Services for ADO.NET。
  • 也就是说,在使用“配置数据同步”对话框配置数据同步之后,调用Synchronize()方法将只能利用在远程数据库上找到的更改来更新本地数据库。
  • 对本地数据库上的数据所进行的更改将不会上载到远程数据库。 
  • 在使用“配置数据同步”对话框配置数据同步之后可以用编程方式在同步期间启用上载(双向同步)。
8.配置数据同步 
  • 服务器连接:提供到远程数据库的数据连接
  • 客户端连接:提供到本地数据库的数据连接,或在客户端上创建新的数据库。
  • “缓存的表”:从远程连接选择您要在您的应用程序中使用的表。
  • 为每个要添加到本地数据库中的表,选择协调更改所需的列和用于存储删除项的表。
    除了跟踪已删除记录的表之外每个表还需要跟踪新记录和 删除记录的表之外,每个表还需要跟踪新记录和
    已修改记录的特定列。

9.远程数据库所需的附加项

10.启用同步   
  • 添加“本地数据库缓存”并在“配置数据同步”对话框中提供配置信息后,还必须向您的应用程序添加代码才能实先同步本
    地数据库和远程数据库。
  • 通过调用SyncAgent 的Synchronize 方法可以启动同步。
  • 然后,可以调用TableAdapter.Fill 方法以本地数据库中已更新的数据加载数据集的数据表。
11.同步方向
  • 仅下载同步
  • 仅上载同步
  • 快照同步
  • 双向同步
12.无法缓存的表 
  • 不使用用户默认架构的表。
  • 未定义主键的表。
  • 名称超过118 个字符的表。
  • 包含数据类型不受SQL Server Compact 3.5 支持的列的表。

13.实例:创建偶尔连接的应用程序

  a)新建一个窗体应用程序项目:RefactorOCSWalkthrough

  b)右击项目,添加新项:

  c)点击添加

  d)点击添加

  e)点击确定

  f)点击确定

  g)点击 下一步

  h)点击完成,此时的项目结构:

  i)将数据源拖到窗体上,并添加同步按钮

  j)修改后台代码:

View Code
        private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.customersBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.northwindDataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“northwindDataSet.Customers”中。您可以根据需要移动或删除它。
            this.customersTableAdapter.Fill(this.northwindDataSet.Customers);

        }

        private void SynchronizeButton_Click(object sender, EventArgs e)
        {
            NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
            Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();

            this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
            MessageBox.Show(syncStats.TotalChangesDownloaded.ToString());
        }

  这样就可以同步远端数据库和本地数据库了.

 未完待续,敬请期待...

 转载请注明出处:http://www.cnblogs.com/refactor

原文地址:https://www.cnblogs.com/refactor/p/2552958.html