/// <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(); * */ }
/// <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); } }