MobiLink开发资源集之MobiLink脚本综述

豆豆网   技术应用频道   2007年08月06日  【字号: 收藏本文

内容摘要:MobiLink 由服务器端(dbmlsrv9)和客户端(dbmlsync)组成。服务器端与数据中心连接,客户端与远程数据库连接。其中,数据中心可以是任何符合 ODBC标准的数据源,例如Oracle、IBM DB2、MS SQLServer与Sybase ASE等。

call ml_add_table_script('demo2', 'emp',
'download_cursor', 'SELECT * FROM emp
WHERE deptno=''0001'''),

  第一个参数代表脚本版本,第二个参数指明该事件跟哪个事件相关,第三个参数指明事件的名称,第四个参数是事件触发时执行的语句。在这里,我们指定服务器只将emp中满足deptno='0001'的数据下载至远程。

  upload_delete、upload_update和upload_insert里面的参数都是通过?占位符表示的。详细信息,请参看《MobiLink 同步技术用户指南》。

  在本部分的屏幕录像中,我们仅使用了针对emp表的update_delete和download_cursor两个事件来指挥只有部门号为0001的数据能下载到远程数据库中,并且在远程数据库中做的删除动作能反映到中心数据库。在服务器启动的过程中去掉了-za+选项,让服务器不要自动生成脚本,去掉了-zu+的选项,通过dbmluser来添加用户,形成真实的用户验证。并且在同步dbmlsync触发同步的过程中,我们去掉了SendColumnNames=ON的扩展选项,因为我们在服务器端已经定义了同步脚本。

  以下是屏幕录像中的全部脚本:

  将在上一议题的Demo中备份的数据库文件拷贝过到新的文件夹下,在命令行中分别启动中心与远程数据库:

dbeng9 center.db
dbeng9 remote.db
dbisql

  对于remote:

CREATE PUBLICATION Lab_02
(
TABLE emp
)
CREATE SYNCHRONIZATION USER "Sales02"
CREATE SYNCHRONIZATION SUBSCRIPTION TO Lab_02
FOR "Sales02"
TYPE 'TCPIP'
ADDRESS 'host=localhost;port=2439'
OPTION ScriptVersion='demo2'

  对center:

CALL ml_add_table_script
('demo2', 'emp', 'upload_delete',
'DELETE emp WHERE empno=?');
CALL ml_add_table_script('demo2', 'emp', '
download_cursor',
'SELECT * FROM emp WHERE deptno=''0001''');

  在控制台下:

dbmluser -c "dsn=center"
-u Sales02 -p abcdefg
dbmlsrv9 -dl -v+ -x tcpip -c "dsn=center"
-o mlserver.mls
dbmlsync -c "dsn=remote" -o dbmlsync.out
-v -u Sales02 -mp abcdefg -e "sv=demo2"

  其中,sv是ScriptVersion的简写。

责编:豆豆技术应用

正在加载评论...