在本课中,您将为 SQL 行处理和直接行处理,将脚本添加到统一数据库中。
SQL 行处理可用于将远程数据与 MobiLink 统一数据库中的表同步。基于 SQL 的脚本可定义:
如何将从 MobiLink 客户端上载的数据应用到统一数据库。
应从统一数据库下载哪些数据。
在本课中,您将为以下基于 SQL 的上载和下载事件编写同步脚本。
upload_insert 此事件对插入客户端数据库的新订单如何应用到统一数据库进行定义。
download_cursor 此事件对应下载到远程客户端的订单进行定义。
download_delete_cursor 在使用非仅上载的同步脚本时,需要使用此事件。对于本教程,需将 MobiLink 服务器设置为忽略此事件。
在此过程中,可以使用存储过程将同步脚本信息添加到 MobiLink 统一数据库。
如果您尚未建立连接,则在 Interactive SQL 中连接到统一数据库。
运行以下命令:
dbisql -c "dsn=mldirect_db" |
使用 ml_add_table_script 存储过程为 upload_insert、download_cursor 和 download_delete_cursor 事件添加基于 SQL 的表脚本。
在 Interactive SQL 中运行以下 SQL 脚本。upload_insert 脚本将上载的 order_id、product_id、quantity 和 order_status 插入到 MobiLink 统一数据库。download_cursor 脚本使用基于时间戳的过滤将更新的行下载到远程客户端。
CALL ml_add_table_script( 'default', 'RemoteOrders', 'upload_insert', 'INSERT INTO RemoteOrders( order_id, product_id, quantity, order_status) VALUES( ?, ?, ?, ? )' ); CALL ml_add_table_script( 'default', 'RemoteOrders', 'download_cursor', 'SELECT order_id, product_id, quantity, order_status FROM RemoteOrders WHERE last_modified >= ?'); CALL ml_add_table_script( 'default', 'RemoteOrders', 'download_delete_cursor', '--{ml_ignore}'); COMMIT |
在本教程中,您将使用直接行处理将特殊处理添加到基于 SQL 的同步系统中。在此过程中,您将注册与 handle_UploadData、handle_DownloadData、end_download、download_cursor 和 download_delete_cursor 事件对应的方法名。在第 4 课:创建 Java 或 .NET 类进行 MobiLink 直接行处理中创建您自己的 java 或 .NET 类。
如果您尚未建立连接,则在 Interactive SQL 中连接到统一数据库。
运行以下命令:
dbisql -c "dsn=mldirect_db" |
注册用于 end_download 事件的 Java 或 .NET 方法。
当 MobiLink 服务器运行 end_download 连接事件时,使用此方法释放内存资源。
对于 Java,在 Interactive SQL 中运行以下 SQL 脚本:
CALL ml_add_java_connection_script( 'default', 'end_download', 'MobiLinkOrders.EndDownload' ); |
对于 .NET,在 Interactive SQL 中运行以下 SQL 脚本:
CALL ml_add_dnet_connection_script( 'default', 'end_download', 'MobiLinkOrders.EndDownload' ); |
Interactive SQL 注册用于 end_download 事件的用户定义的 EndDownload 方法。
注册用于 handle_UploadData 和 handle_DownloadData 事件的 Java 或 .NET 方法。
对于 Java,在 Interactive SQL 中运行以下 SQL 脚本:
CALL ml_add_java_connection_script( 'default', 'handle_UploadData', 'MobiLinkOrders.GetUpload' ); CALL ml_add_java_connection_script( 'default', 'handle_DownloadData', 'MobiLinkOrders.SetDownload' ); |
对于 .NET,在 Interactive SQL 中运行以下 SQL 脚本:
CALL ml_add_dnet_connection_script( 'default', 'handle_UploadData', 'MobiLinkOrders.GetUpload' ); CALL ml_add_dnet_connection_script( 'default', 'handle_DownloadData', 'MobiLinkOrders.SetDownload' ); |
Interactive SQL 分别注册用于 handle_UploadData 和 handle_DownloadData 事件的用户定义的 GetUpload 和 SetDownload 方法。在后续课程中,将创建这些方法。
注册 download_cursor 和 download_delete_cursor 事件。
在 Interactive SQL 中运行以下 SQL 脚本:
CALL ml_add_table_script( 'default', 'OrderComments', 'download_cursor', '--{ml_ignore}'); CALL ml_add_table_script( 'default', 'OrderComments', 'download_delete_cursor', '--{ml_ignore}'); |
使用脚本时,download_cursor 和 download_delete_cursor 事件必须进行注册才能用于 OrderComments 表,因为同步是双向同步,而不是仅上载同步。请参见必需的脚本。
提交所做的更改。
在 Interactive SQL 中运行以下 SQL 脚本:
COMMIT; |
现在可以关闭 Interactive SQL。
有关使用基于 SQL 的事件将数据从远程客户端上载到 MobiLink 统一数据库的信息,请参见:
有关将数据上载到除统一数据库之外的其它数据源的信息,请参见处理直接上载。
有关使用基于 SQL 的事件从 MobiLink 统一数据库下载数据的信息,请参见:
有关将数据下载到除统一数据库之外的其它数据源的信息,请参见处理直接下载。
有关同步事件序列的信息,请参见MobiLink 事件概述。
有关下载过滤的同步技术的信息,请参见基于时间戳的下载和在远程数据库之间对行进行分区。
有关管理脚本的信息,请参见添加和删除脚本。
有关直接行处理的信息,请参见直接行处理。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |