频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 虚拟主机  域名注册     常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站服务器架设维护教程 -> 服务器数据库应用 -> 实例介绍一个相对复杂的MobiLink例子

实例介绍一个相对复杂的MobiLink例子

作者:未知  来源:www.jz123.cn  发布时间:2007-8-6 11:52:40  发布人:圈圈

减小字体 增大字体

具体步骤:

1.需要两个ASA的数据库。在命令行方式下,分别键入

dbinit con1.db
dbinit rem1.db

con1这个数据库代表中心数据库,rem1代表远程数据库,我们把中心数据库的数据通过MobiLink同步到rem1来。

2.中心数据库里面需要数据

在dbisql下,连接con1数据库(连接方法不会发帖子问啊,或者下载文档看)

输入命令:

对con1建表:

CREATE TABLE dept
(
deptno CHAR(4) NOT NULL PRIMARY KEY,
deptname VARCHAR(10) NOT NULL
);
CREATE TABLE employee
(
empno CHAR(5) NOT NULL PRIMARY KEY,
empname VARCHAR(20) NOT NULL,
deptno CHAR(4) NOT NULL,
FOREIGN KEY (deptno) REFERENCES dept(deptno)
);

对con1添加数据:

INSERT INTO dept VALUES('0001', 'admin');
INSERT INTO dept VALUES('0002', 'finance');
INSERT INTO dept VALUES('0003', 'sales');
INSERT INTO dept VALUES('0004', 'presales');
INSERT INTO dept VALUES('0005', 'marketing');
INSERT INTO dept VALUES('0006', 'CS&S');
INSERT INTO dept VALUES('0007', 'ADO');
COMMIT;
INSERT INTO employee VALUES('31274', 'Johnson Zhang', '0005');
COMMIT;

OK。然后再连接上rem1数据库,也要建表,但是不要数据:

CREATE TABLE employee
(
empno CHAR(5) NOT NULL PRIMARY KEY,
empname VARCHAR(20) NOT NULL,
deptno CHAR(4) NOT NULL,
);

我们要做的是一个双向同步的例子,也就是说con1和rem1的数据更改在同步后都会在两端保持一致。

2.ODBC管理器

分别建立对两个数据库的ODBC连接,名为“cons”和“rem1”。

3.在dbisql下,连接到rem1数据库,并建立发布

CREATE PUBLICATION demo1
(
TABLE employee
);

a. 发布的含义是什么呢?大家灌水回答问题,获赠图书!

b. 如果我还想发布其他的表怎么办呢?

c. 如果我只想发布employee表中的前两列,并且是empno大于40000的数据怎么办呢?

答案可以在《MobiLink 服务器启动同步用户指南》中寻找。

4.创建同步用户

在dbisql下,

CREATE SYNCHRONIZATION USER "51";

5.建立订阅

在dbisql下,

CREATE SYNCHRONIZATION SUBSCRIPTION 
TO "demo1"
FOR "51"
TYPE 'TCPIP'
ADDRESS 'host=localhost;port=2439'
OPTION ScriptVersion='demo1';

6.三件事情

a. 搭建了中心数据库(con1)。包含建立ODBC

b. 搭建了远程数据库(rem1)。包含建立ODBC

c. 在远程数据库上定义发布、同步用户和订阅

因为MobiLink可支持ASA/UltraLite(远程端)和任何符合ODBC标准的数据源同步,所以要建立ODBC。当然,ASA 10(还没有发布呢)可以支持跟任何数据源的同步(XML、EXCEL、文本文件等)。

定义的发布指的是我们标定远程数据库的哪些表及其这些对这些表的相关投影和选择后的数据是需要同步的。

订阅可以让中心服务器与远程数据库的数据按照定义的订阅规则交互。

MobiLink是先做上载的,也就是说先把远程的数据上载到服务器端,当然你也可以不做上载。

MobiLink在做完上载后做下载,也就是把服务器端的数据下载到远程数据库上,这样就保持了con1和rem1两个数据库的一致。

另外,MobiLink在做上载的时候是做仅更改的数据,也就是做增量上载,做下载的时候需要一些技巧来完成增量下载,本次主题不讨论这个问题。

对于上载和下载来说,都是通过一些在中心数据库的事件来实现的。这些典型的事件包括:

upload_insert事件

upload_update事件

upload_delete事件

download_cursor事件

等等。

在这里我们仅介绍这几个事件。

对于upload开头的,肯定都是上载事件了。当远程服务器(rem1)和中心服务器(con1)通过MobiLink连接的时候,也就是MobiLink客户端与MobiLink服务器连接了之后,MobiLink客户端根据发布定义创建上载流。

如果在同步与同步期间,符合发布定义的数据有了改变,这些改变后的数据就会包含在上载流中。上载流通过MobiLink到达中心服务器,进而通过upload_insert, upload_update和upload_delete事件控制这些数据的走向。

比如,在这个例子中,我们可以在dbisql下,分别应用ml_add_table_script存储过程来完成对三个事件的定义:

call ml_add_table_script( 'demo1', 'employee',
'upload_insert','INSERT INTO employee( empno,
empname, deptno) VALUES (?, ?, ?)')
call ml_add_table_script('demo1', 'employee',
'upload_update', 'UPDATE employee SET deptno=?,
empname=? WHERE empno=?')
call ml_add_table_script('demo1', 'employee',
 'upload_delete', 'DELETE employee WHERE empno=?')

这样的话,上载上来的数据就可以按照这三个事件的要求进入中心数据库了。当然,你可以根据自己的要求改变这三个事件中的SQL语句。demo1作为版本编号来讲非常重要,他要与客户端的订阅中的版本号一致。

然后,上载完成了。MobiLink服务器就会根据download_cursor事件的要求来组织下载,下载的数据传到MobiLink客户端后会应用到远程数据库。

call ml_add_table_script('demo1', 'employee',
'download_cursor', 'SELECT empno, empname,
deptno FROM employee')

这条语句定义了download_cursor事件,这个事件中的结果集将下载并应用到远程数据库。

所以,这样的话,整个同步的搭建工作就差不多了,接下来,我们就启动同步服务器并触发同步。

7.启动同步服务器

在cmd下

dbmlsrv9 -dl –v+ –zu+ -x
tcpip -c "DSN=cons" –ot ml.txt

这样,MobiLink服务器就启动了,同时也不像简单的那个例子一样,它不支持自动生成脚本,因为脚本我们已经定义了。本命令在con1所在的计算机上执行。

触发同步:

在cmd下

DBMLSync –c "dsn=rem1"
–v –dl  –o rem1.txt

本命令在rem1所在计算机上执行。这样的话呢,我们就从客户端触发了一次同步,对数据进行了同步。

在同步完成后,可以关闭DBMLSync所开启的窗口,把中心和远程的数据都更改一下,再次DBMLSync。

[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 头像-qq头像(qq新头像)4..
· 注册码大全十
· 注册码大全三
· 让你轻松架设FTP服务器1..
· 梦幻背景图片7
· 卡通动物图片6
· 风景图片8
· 网页制作素材-按钮素材2..
· 注册码大全九
· 让你轻松架设FTP服务器5..
· 50MB免费空间 FTP PHP M..
关注此文读者还看过
· 安安心心publisher, 堂堂..
· 中国寻人第一人沈浩:做寻..
· PS作品《对弈》解析:棋..
· 防范SQL指令植入式攻击(..
· APACHE(3)
· 从ASP迁移至ASP+--进入D..
· 人性和互联网
· 深入研究Application和S..
· 使用ISAPI过滤器增强IIS..
· 首家网上药店剑挑传统零..
· 菜鸟也能架设FTP服务器 ..
· 使用 Fireworks 画佳能A..
· 将HTML表单数据存储为XM..
· Photoshop无痕迹拼接美女..
· VB.NET中LISTVIEW排序
· 第四章 C#类型
相关文章
· 实例介绍一个相对复杂的Mob..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
免责申明:中国建站之家(www.jz123.cn)上的所有提供下载的软件和资源
均来源于网络,为软件或程序作者提供和网友推荐收集整理而来,仅供学习
和研究使用。如有侵犯你的版权,请立即联系我们,本站将在3个工作日内删除。
粤ICP备05092265号