zoukankan      html  css  js  c++  java
  • 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;
            }

  • 相关阅读:
    19.Mybatis之动态SQL
    18.Mybatis的配置文件标签属性自动提示
    17.Mybatis的基本使用及入门案例
    16.jQuery属性操作
    15.jQuery淡入淡出效果
    14.jQuery常用方法
    13.jQuery选择器
    12.JavaScript基础知识
    11.浅析Java中的final关键字
    10.基于Tomcat的SmartUplaod文件上传
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306822.html
Copyright © 2011-2022 走看看