Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
对于 MobiLink 同步(包括直接行处理),您的数据源必须具有不更新的唯一主键。在非关系数据源(如电子表格或文本文件)中,这意味着有一列必须包含标识行的唯一不变的值。
请参见唯一主键。
在使用直接行处理时,仅当 MobiLink 客户端被配置为发送列名时,表的列名才可用。或者,您也可以使用列索引访问行信息。
要使用列名称,请参见:
如果可能,则像设置基于时间戳的 SQL 应用程序一样来设置您的直接行处理应用程序;维护 last_modified 列并下载基于该列的数据。此方法可以避免您使用其它下载方法时可能出现的无法预料的问题。
请参见实现基于时间戳的下载。
您无法提交针对 MobiLink 统一数据库的事务。但是,可以提交针对直接行处理数据源的事务。在设置事务管理时,请记住以下提示:
在 MobiLink 提交之前提交上载 在应用上载时,MobiLink 会在 end_upload 事件结束时提交更改。应确保您想要保留的所有上载更改已在 end_upload 脚本结束之前提交。否则,如果出现错误或故障,您可能会进入到一种状态:您的应用程序认为已应用上载,但 MobiLink 却尚未应用数据,这会导致数据丢失。
处理冗余上载 如果在应用程序提交一个已上载的行之后并且在 MobiLink 服务器提交该行之前出现错误或故障,则 MobiLink 服务器和您的数据源可能会处于不一致状态。可以通过允许冗余上载并采用适当的处理逻辑来解决此问题,以确保能够正确地应用冗余上载。特别地,当您的应用程序再次发送上载时,不应再次应用该上载。
要处理错误,请确保采用恰当的事务管理(如上所述)。此外,用于处理行的 Java 或 .NET 代码必须发送 MobiLink 服务器出现的任何异常。如果在 MobiLink 服务器或您的应用程序提交更改之前发生错误,则 MobiLink 会回退事务并保持与应用程序一致的状态。
对于直接行处理,MobiLink 为每个数据库连接创建一个类实例。该类实例在同步结束时不被销毁:它是在数据库连接关闭时被销毁。类级别变量保留先前同步的值。