C#数据同步中基本步骤和用到的相关函数 淮安七夕软件有限公司

数据同步对比步骤:

1.将两数据库中对应的数据表分别生成XML文件

///
<summary>         ///
将一个DataTable以xml方式存入指定的文件中         ///
</summary>         /// <param
name="dt"></param>         ///
<param name="filePath"></param>
        public void
SaveDataTableToXml(DataTable dt, string filePath)
        {
            //创建文件夹
            if
(!Directory.Exists(Path.GetDirectoryName(filePath)))
            {
               
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
            }

DataSet ds = new DataSet();
           
ds.Tables.Add(dt.Copy());
           
ds.WriteXml(filePath);         }

/// <summary>
        /// 从一个指定的文件中读取DataTable
        /// </summary>
        /// <param
name="filePath"></param>        
public DataTable ReadDataTableFromXml(string filePath)
        {
            DataSet ds =
new DataSet();
           
ds.ReadXml(filePath);
            if
(ds.Tables.Count > 0)
            {
               
return ds.Tables[0];
            }
            else
            {
               
return null;            
}         }

2.上传要对比的XML数据文件到服务器端或者是从服务器下载XML文件到本地

C#Sockect异步传送或者WebClient方式传送

3.对比要同步的数据资料

///
<summary>         /// 对比文件
        /// </summary>
        /// <param
name="localFile">本地文件</param>
        /// <param
name="remoteFile">远程文件</param>
        /// <returns></returns>
        private bool FileCompare(string
localFile, string remoteFile)         {
            int
localFilebyte;
            int
remoteFilebyte;
            FileStream
localFileStream;
            FileStream
remoteFileStream;
            if (localFile
== remoteFile)
            {
               
return true;            
}            
localFileStream = new FileStream(localFile, FileMode.Open);
           
remoteFileStream = new FileStream(remoteFile, FileMode.Open);
            if
(localFileStream.Length != remoteFileStream.Length)
            {
               
localFileStream.Close();
               
remoteFileStream.Close();
               
return false;            
}             do
            {
               
localFilebyte = localFileStream.ReadByte();
               
remoteFilebyte = remoteFileStream.ReadByte();
            }
            while
((localFilebyte == remoteFilebyte) && (localFilebyte != -1));
           
localFileStream.Close();
           
remoteFileStream.Close();
            return
((localFilebyte - remoteFilebyte) == 0);
        }
        /// <summary>
        /// 对比数据表
        /// </summary>
        /// <param
name="localDataTable">本地数据表</param>
        /// <param
name="remoteDataTable">远程数据表</param>
        /// <returns></returns>
        public bool
DataTableCompare(DataTable localDataTable, DataTable remoteDataTable)
        {
            if
(localDataTable == null || remoteDataTable == null)
            {
               
return false;            
}             if
(localDataTable.Rows.Count != remoteDataTable.Rows.Count)
            {
               
return false;            
}             if
(localDataTable.Columns.Count != remoteDataTable.Columns.Count)
            {
               
return false;            
}             for (int i
= 0; i < localDataTable.Rows.Count; i++)
            {
               
for (int j = 0; j < localDataTable.Columns.Count; j++)
               
{
                   
if (localDataTable.Rows[i][j].ToString() !=
remoteDataTable.Rows[i][j].ToString())
                   
{
                       
return false;
                   
}
               
}             }
            return true;
        }

时间: 2024-11-12 17:47:53

C#数据同步中基本步骤和用到的相关函数 淮安七夕软件有限公司的相关文章

Linux下rsync的安装与配置远程服务器数据同步

服务器里数据最重要,商业用途的数据更加重要,一旦丢失,结果不堪设想.所以备份很重要.可以使用来rsync+crontab来做数据同步. 方法/步骤 首先是安装 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.0.tar.gz cd rsync-3.1.0/ ./configure --prefix=/usr/local/rsync make make install 测试下 make test 没问题 下面开始配置,注意默认是没有rsync

rsync实现Linux服务器数据同步到windows机器上

rsync实现Linux服务器上的数据同步到windows上 一.windows上安装配置cwrsyncserver软件 1.下载rsyncserver软件包,傻瓜式安装,当出现account和密码界面时,可以设置自己的用户名和密码. 2.配置rsyncd.conf文件 pid file = rsyncd.pid port = 2878 use chroot = false strict modes = false hosts allow = * log file = rsyncd.log ui

Delphi中多线程用消息实现VCL数据同步显示

Delphi中多线程用消息实现VCL数据同步显示 Lanno Ckeeke 2006-5-12 概述: delphi中严格区分主线程和子主线程,主线程负责GUI的更新,子线程负责数据运算,当数据运行完毕后,子线程可以向主线程式发送消息,以便通知其将VCL中的数据更新. 实现: 关键在于消息的发送及接收.在消息结构Tmessage中wParam和lParam类型为Longint,而指针类型也定义为Longint,可以通过此指针来传递自己所感兴趣的数据.如传递字符数组: 数组定义: const MA

如何通过Flow将SharePoint数据同步到Excel中

很多同学在日常工作中希望对SPO LIST的数据进行分析汇报,但没有Power BI怎么办呢,难道每次要分析数据的时候都去SPO上把数据导出一份吗,这个交互是不是有点不太理想呢.还有一个场景就是老板就喜欢看excel.PPT形式的报表,你有招么,哈哈. 那么今天跟大家分享一下如何通过flow将SPO的数据自动保存到excel中 首先,我们继续沿用我们的请假申请list,我们一起回忆一下这个list的功能. 用于员工提交请假申请 申请提交后自动触发审批邮件到直属领导 直属领导审批后自动触发邮件反馈

数据库中两张表之间的数据同步实现思路(增加、删除、更新)Mysql、sqlserver

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加:如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END 2.数据同步删除:如有

安卓中接口的实现 实现了本地的数据同步

// 药品结算数据同步 private void getUpdatePrescriptionCharge(String clientVersion) { // TODO Auto-generated method stub HashMap<String, String> paramPrescriptionCharge = new HashMap<String, String>(); paramPrescriptionCharge.put("clientVersion&qu

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

SQLServer与Oracle的数据同步(触发器trigger)

说到同步,其实是靠"作业"定时调度存储过程来操作数据,增,删,改,全在里面,结合触发器,游标来实现,关于作业调度,使用了5秒运行一次来实行"秒级作业",这样基本就算比较快的"同步" 做的是SQL Server往Oracle端同步,先在sql server上建立往Oracle端的链接服务器,我用一个视图"封装"了一下链接服务器下的一张表. create view v_ora_PUBLISHLASTREC as select *

【转】mysql数据库读写分离数据同步

转载请注明来源:mysql数据库读写分离数据同步 mysql数据库读写分离数据同步 我是用了两个xp(一个主的,一个从的)的系统测试成功的,linux系统我也做测试了,没有成功,不过我想我所遇到的问题是同一个问题,xp下的可以成功,linux下的应该也可以成功,稍候会测试,然后更新结果! PS:刚测试了下linux 可以同步成功,主服务器是xp,从服务器是centos,可以成功. 例: A机器 192.168.0.2 B机器 192.168.0.3 两个机器可以ping通,互相访问 先配置主服务