Ejemplo n.º 1
0
        /// <summary>
        /// 全同步单个表
        /// </summary>
        /// <param name="buyerId"></param>
        public int AllSyncOneData(LogedInUser CurrentUser, string tableName)
        {
            int count = 0;

            try
            {
                ProxyFactory.SyncDataProxy.RefreshUserData();
                byte[]    data = ProxyFactory.SyncDataProxy.GetSyncTableEx(tableName, CurrentUser);
                DataTable dt   = (DataTable)CompressUtil.Decompression(data);
                //DataTable dt = ProxyFactory.SyncDataProxy.GetSyncTable(tableName,CurrentUser);

                //count = dt.Rows.Count;
                count = AllSyncTable1(dt);

                //AllSyncTable1(dt);
            }
            catch (Exception e)
            {
                count = -1;
                //CloseConntion();
            }
            //CloseConntion();
            return(count);

            /*改之前 备份
             *  DataSet ds = DataSerialization.UnSerializeData(ProxyFactory.SyncDataProxy.GetSyncData(buyerId));
             *  foreach (DataTable dt in ds.Tables)
             *  {
             *
             *      AllSyncTable(dt);
             *
             *  }
             *  CloseConntion();
             * */
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 采用csv文件导入方式单表全同步
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="buyerId"></param>
        public int AllSyncOneTableFromCsv(string tableName, LogedInUser CurrentUser)
        {
            int count = 0;

            using (DbTransaction transaction = dbFacade.BeginTransaction(con))
            {
                try
                {
                    //DateTime dt = DateTime.Now;

                    string syncDate = ProxyFactory.SyncDataProxy.GetSysDate();
                    //还原被压缩的csv串 2007-7-5 Cj
                    string data = (string)CompressUtil.Decompression(ProxyFactory.SyncDataProxy.GetDataByCsvStream(tableName, CurrentUser));
                    ////byte[] data = ProxyFactory.SyncDataProxy.DataToFile(tableName, CurrentUser);
                    //发布时使用
                    //string apppath = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory + "\\DB\\";

                    //本地调试使用
                    //string apppath = AppDomain.CurrentDomain.BaseDirectory + "DB\\";
                    string apppath     = ClientConfiguration.TmpDBPath;
                    string apptemppath = ClientConfiguration.TmpDBFile;

                    string file = apppath + tableName + ".csv";
                    File.WriteAllText(file, data, Encoding.GetEncoding(936));  //"UTF-8"  , 936

                    ////string file = Path.Combine(apppath, tableName);
                    ////File.WriteAllBytes(file, data);
                    ////CompressUtil.DecompressFile(file, file + ".csv");

                    //DateTime dt1 = DateTime.Now;
                    //TimeSpan t1 = dt1.Subtract(dt);
                    dbFacade.SQLExecuteNonQuery("delete from " + tableName);
                    //dbFacade.SPExecuteNonQuery("p_OpenADShell");
                    StringBuilder sql = new StringBuilder();
                    sql.Append("insert into ");
                    sql.Append(tableName);
                    sql.Append(" Select * From OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source=");
                    sql.Append(apppath);
                    sql.Append(";Extended properties=Text')...[").Append(tableName).Append("#csv] ");

                    //string sql = "insert into " + tableName + " select * from OpenRowset('MSDASQL', 'driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=" + apppath + ";','select * from " + tableName + ".csv' )";
                    dbFacade.SQLExecuteNonQuery(sql.ToString());
                    //dbFacade.SPExecuteNonQuery("p_CloseADShell");
                    //CSVUtils.ImportFromCsv(tableName, apptemppath, apppath);

                    //TimeSpan t2 = DateTime.Now.Subtract(dt1);
                    //MessageBox.Show("生成csv:" + t1.TotalSeconds.ToString() + "\n导入csv:" + t2.TotalSeconds.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    StringBuilder sql1 = new StringBuilder();
                    sql1.Append("update SYNC_TIME set syncDate = '").Append(syncDate);
                    sql1.Append("' where tableName = '").Append(tableName).Append("'");
                    int res = DbFacade.SQLExecuteNonQuery(sql1.ToString(), transaction);
                    if (res < 1)
                    {
                        sql1.Remove(0, sql1.Length);
                        sql1.Append("insert into SYNC_TIME values('").Append(tableName);
                        sql1.Append("','").Append(syncDate).Append("')");
                        DbFacade.SQLExecuteNonQuery(sql1.ToString(), transaction);
                    }
                    File.Delete(file);
                    //File.Delete(file + ".csv");
                    count = getRecordCount(tableName, transaction);
                    dbFacade.CommitTransaction(transaction);
                }
                catch (Exception e)
                {
                    dbFacade.RollbackTransaction(transaction);
                    count = -1;
                }
                return(count);
            }
        }