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

局域网内两台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();    }    }       
    
    
   到此为止,应用程序的业务逻辑类和主窗体类都已经更新完毕,现在的应用程序能根据用户的改用更新数据库中的相关内容了。   
 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值