• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#数据同步中基本步骤和用到的相关函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

数据同步对比步骤:

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

 1          /// <summary>
 2         /// 将一个DataTable以xml方式存入指定的文件中
 3         /// </summary>
 4         /// <param name="dt"></param>
 5         /// <param name="filePath"></param>
 6         public void SaveDataTableToXml(DataTable dt, string filePath)
 7         {
 8             //创建文件夹
 9             if (!Directory.Exists(Path.GetDirectoryName(filePath)))
10             {
11                 Directory.CreateDirectory(Path.GetDirectoryName(filePath));
12             }
13 
14             DataSet ds = new DataSet();
15             ds.Tables.Add(dt.Copy());
16             ds.WriteXml(filePath);
17         }
18 
19         /// <summary>
20         /// 从一个指定的文件中读取DataTable
21         /// </summary>
22         /// <param name="filePath"></param>
23         public DataTable ReadDataTableFromXml(string filePath)
24         {
25             DataSet ds = new DataSet();
26             ds.ReadXml(filePath);
27             if (ds.Tables.Count > 0)
28             {
29                 return ds.Tables[0];
30             }
31             else
32             {
33                 return null;
34             }
35         }

 

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

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

 

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

 1          /// <summary>
 2         /// 对比文件
 3         /// </summary>
 4         /// <param name="localFile">本地文件</param>
 5         /// <param name="remoteFile">远程文件</param>
 6         /// <returns></returns>
 7         private bool FileCompare(string localFile, string remoteFile)
 8         {
 9             int localFilebyte;
10             int remoteFilebyte;
11             FileStream localFileStream;
12             FileStream remoteFileStream;
13             if (localFile == remoteFile)
14             {
15                 return true;
16             }
17             localFileStream = new FileStream(localFile, FileMode.Open);
18             remoteFileStream = new FileStream(remoteFile, FileMode.Open);
19             if (localFileStream.Length != remoteFileStream.Length)
20             {
21                 localFileStream.Close();
22                 remoteFileStream.Close();
23                 return false;
24             }
25             do
26             {
27                 localFilebyte = localFileStream.ReadByte();
28                 remoteFilebyte = remoteFileStream.ReadByte();
29             }
30             while ((localFilebyte == remoteFilebyte) && (localFilebyte != -1));
31             localFileStream.Close();
32             remoteFileStream.Close();
33             return ((localFilebyte - remoteFilebyte) == 0);
34         }
35         /// <summary>
36         /// 对比数据表
37         /// </summary>
38         /// <param name="localDataTable">本地数据表</param>
39         /// <param name="remoteDataTable">远程数据表</param>
40         /// <returns></returns>
41         public bool DataTableCompare(DataTable localDataTable, DataTable remoteDataTable)
42         {
43             if (localDataTable == null || remoteDataTable == null)
44             {
45                 return false;
46             }
47             if (localDataTable.Rows.Count != remoteDataTable.Rows.Count)
48             {
49                 return false;
50             }
51             if (localDataTable.Columns.Count != remoteDataTable.Columns.Count)
52             {
53                 return false;
54             }
55             for (int i = 0; i < localDataTable.Rows.Count; i++)
56             {
57                 for (int j = 0; j < localDataTable.Columns.Count; j++)
58                 {
59                     if (localDataTable.Rows[i][j].ToString() != remoteDataTable.Rows[i][j].ToString())
60                     {
61                         return false;
62                     }
63                 }
64             }
65             return true;
66         }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
转: C#实现的18位身份证格式验证算法 - 北极燕鸥发布时间:2022-07-14
下一篇:
可以使用C#语言的在线ACM题库发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap