您的位置:首页 > 数据库

局域网内两台SQL Server电脑如何实时同步数据

2007-08-20 09:28 661 查看
局域网内两台SQL Server电脑如何实时同步数据
2007-04-10 15:56
在数据库事务处理系统中,数据的同步性问题非常重要,下面我们来建立一个能检测数据同步性的存储过程。

CREATE PROCEDURE dbo.up_UpdatePublisherName
(
@pub_id char(4),
@pub_name varchar(40),
@Original_pub_name varchar(40)
)
AS
if exists(select pub_id
 from publishers
where (pub_id = @pub_id) AND (pub_name = @Original_pub_name))
Begin
 UPDATE publishers SET pub_name = @pub_name
 WHERE (pub_id = @pub_id)
End
RETURN

接着,我们在上面的应用程序中调用该存储过程以更新发行商的名称。首先,在原有应用程序的基础上完善其业务逻辑类-Publishers类:

1.添加一个新的SqlCommand对象,该对象能作为SqlDataAdapter对象的 UpdateCommand属性被使用:
private SqlCommand cmdUpdPubs;
2.更新该类的构造函数Publishers()函数,添加以下内容:
// 创建另一个SqlCommand对象,该对象引用更新发行商名称的存储过程
cmdUpdPubs = new SqlCommand();
cmdUpdPubs.Connection = cnPubs;
cmdUpdPubs.CommandType = CommandType.StoredProcedure;
cmdUpdPubs.CommandText = "up_UpdatePublisherName";
// 为上面的SqlCommand对象添加必要的参数
cmdUpdPubs.Parameters.Add( "@pub_id", SqlDbType.Char, 4, "pub_id" );
cmdUpdPubs.Parameters.Add( "@pub_name", SqlDbType.VarChar, 40, "pub_name" );
SqlParameter updParam = new SqlParameter
( "@Original_pub_name", SqlDbType.VarChar, 40, "pub_name" );
updParam.SourceVersion = DataRowVersion.Original;
cmdUpdPubs.Parameters.Add( updParam );
3.指定SqlDataAdapter对象的UpdateCommand属性为上面定义的SqlCommand对象:
daPubs.UpdateCommand = cmdUpdPubs;
4.添加方法UpdatePublisherName():
public void UpdatePublisherName( DataSet dsChanges )
{
// 更新所有改动
daPubs.Update( dsChanges );
}
应用程序的业务逻辑类完善之后,在主窗体上添加一个名为“更新数据集”的按钮,并添加该按钮的事件响应函数如下:

private void button1_Click(object sender, System.EventArgs e) { if( ds.HasChanges() ) { pubs.UpdatePublisherName( ds.GetChanges() ); ds.Clear(); ds = pubs.GetPublisherInfo(); } }

到此为止,应用程序的业务逻辑类和主窗体类都已经更新完毕,现在的应用程序能根据用户的改用更新数据库中的相关内容了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: