数据同步对比步骤:
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;
}
分享到:
相关推荐
C#基本函数代码C#基本函数代码C#基本函数代码C#基本函数代码
利用C#写的数据同步源代码。利用C#写的数据同步源代码。
本文总结在在c#开发中经常用到的函数,以便在开发中方便查找。
c# 数据同步服务 小Demo +服务安装流程
实现SQL与ORACLE通信,有效提高性能的一种解决方案!
C#OPC同步读写源码,西门子PLC,工程师的福音
C#中实现datagridview数据与文本框数据同步
C# 自动,定时关机程序(用到API函数) 教学用 API,自动关机,定时关机,自动定时关机
C#中datagridview中添加序号和编辑数据同步本地数据库
c#析构构造函数c#析构构造函数c#析构构造函数c#析构构造函数
C#常用函数源代码C#常用函数源代码C#常用函数源代码C#常用函数源代码C#常用函数源代码
C#中构造函数和析构函数的用法
C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用
主要介绍了C#应用BindingSource实现数据同步的方法,需要的朋友可以参考下
C#与网络时间同步的时间处理函数代码
C# 实现回调函数C# 实现回调函数C# 实现回调函数C# 实现回调函数C# 实现回调函数
C#开发步骤C#开发步骤C#开发步骤C#开发步骤C#开发步骤C#开发步骤C#开发步骤C#开发步骤C#开发步骤
C# 获取调用函数 参数名称和值C# 获取调用函数 参数名称和值C# 获取调用函数 参数名称和值C# 获取调用函数 参数名称和值C# 获取调用函数 参数名称和值C# 获取调用函数 参数名称和值
C# 高斯函数 程序
C#操纵Word的基本方法 提供完整的基本操作函数