public TableRecordModel CreateNewRecord(bool allowExpand) { TableRecordModel result = null; if (BigEndian) { tablename = ConvertBE(Name); } else { tablename = Name; } int newRecNo = TDB.TDBTableRecordAdd(dbIndex, tablename, allowExpand); if (newRecNo == 0xFFFF) { //We are at max capacity //Chuck an exception throw new ApplicationException("Table " + name + " has reached max capacity"); } result = ConstructRecordModel(newRecNo); result.Dirty = true; parentModel.Dirty = true; foreach (TdbFieldProperties fieldProps in fieldList) { switch (fieldProps.FieldType) { case TdbFieldType.tdbString: string val = "Unassigned"; result.RegisterField(fieldProps.Name, val); break; case TdbFieldType.tdbUInt: UInt32 intval = 0; result.RegisterField(fieldProps.Name, (int)intval); break; case TdbFieldType.tdbSInt: Int32 signedval = 0; result.RegisterField(fieldProps.Name, signedval); break; case TdbFieldType.tdbFloat: float floatval = 0; result.RegisterField(fieldProps.Name, floatval); break; default: Trace.WriteLine("NOT SUPPORTED YET!!!"); break; } } return(result); }
private async void DownloadApplyTDB() { var result = _messageService.Show("This will create the 'world' database. If the database already exists, it will be overwritten! Continue?", "Warning!", MessageButton.YesNo, MessageImage.Warning); if (result == MessageResult.Yes) { Progress <int> progress = new Progress <int>(val => { TDBSetupProgress = val; }); //var wizard = e.Source as Xceed.Wpf.Toolkit.Wizard; //if (Wizard != null) //{ // Wizard.CanSelectNextPage = false; // Wizard.CanSelectPreviousPage = false; //} TDBSetupWorking = true; string tempDir = FileHelper.GenerateTempDirectory(); string file = Path.Combine(tempDir, "TDB.7z"); string extractTo = Path.Combine(tempDir, "TDB"); Directory.CreateDirectory(extractTo); await TDB.DownloadTDBAsync(progress, file); await TDB.Extract7zAsync(file, extractTo, progress); string[] files = Directory.GetFiles(extractTo); string tdbSql = ""; foreach (string f in files) { if (Path.GetFileName(f).StartsWith("TDB_full")) { tdbSql = f; break; } } if (!string.IsNullOrEmpty(tdbSql)) { MySqlDatabase db = new WorldDatabase(MySQLHost, MySQLPort, MySQLUsername, MySQLPassword, "world"); await db.CreateDatabaseAsync(); await TDB.ApplyAsync(tdbSql, db, progress, new CancellationTokenSource()); } FileHelper.DeleteDirectory(tempDir); TDBSetupWorking = false; } }
public void Compact() { TDB.TDBDatabaseCompact(dbIndex); }
/// <summary> /// This function saves the changes from the table record models to the database /// /// These changes need to be made persistent by calling TDB.Save(). usually you don't /// call this function directly. Instead call EditorModel.Save() which will /// do it all for you. /// </summary> public void Save() { List <TableRecordModel> listToUse = null; for (int j = 0; j < 2; j++) { if (j == 0) { listToUse = recordList; } else { listToUse = deletedRecordList; } foreach (TableRecordModel record in listToUse) { if (record.Dirty) { // Need to reverse tablename to find the correct table since we reversed them to begin with // when first reading them in to make them compatible with the editor. if (BigEndian) { tablename = ConvertBE(Name); } else { tablename = Name; } //First check to see if this record is going to be deleted if (record.Deleted) { Trace.Write("About to mark for deletion record " + record.RecNo); // Mark record for deletion in DB // s68 - not sure why 'record remove was commented out and changed to 'change deleted' , that doesnt remove the record // will leave it here in case there was some kind of problem with using record remove. // TDB.TDBTableRecordChangeDeleted(dbIndex, tablename, record.RecNo, false); TDB.TDBTableRecordRemove(dbIndex, tablename, record.RecNo); continue; } string[] keyArray = null; int[] valueArray = null; float[] floatArray = null; string[] stringValueArray = null; #region Int Fields record.GetChangedIntFields(ref keyArray, ref valueArray); for (int i = 0; i < keyArray.Length; i++) { TDB.TDBFieldSetValueAsInteger(dbIndex, tablename, keyArray[i], record.RecNo, valueArray[i]); } #endregion #region String Fields keyArray = null; record.GetChangedStringFields(ref keyArray, ref stringValueArray); for (int i = 0; i < keyArray.Length; i++) { TDB.TDBFieldSetValueAsString(dbIndex, tablename, keyArray[i], record.RecNo, stringValueArray[i]); } #endregion #region Float Fields keyArray = null; record.GetChangedFloatFields(ref keyArray, ref floatArray); for (int i = 0; i < keyArray.Length; i++) { TDB.TDBFieldSetValueAsFloat(dbIndex, tablename, keyArray[i], record.RecNo, floatArray[i]); } #endregion record.DiscardBackups(); } } } //TDB.TDBDatabaseCompact(dbIndex); //TDB.TDBSave(dbIndex); }
/// <summary> /// This function saves the changes from the table record models to the database /// /// These changes need to be made persistent by calling TDB.Save(). usually you don't /// call this function directly. Instead call EditorModel.Save() which will /// do it all for you. /// </summary> public void Save() { List <TableRecordModel> listToUse = null; for (int j = 0; j < 2; j++) { if (j == 0) { listToUse = recordList; } else { listToUse = deletedRecordList; } foreach (TableRecordModel record in listToUse) { if (record.Dirty) { //First check to see if this record is going to be deleted if (record.Deleted) { Trace.Write("About to mark for deletion record " + record.RecNo); //Mark record for deletion in DB TDB.TDBTableRecordChangeDeleted(dbIndex, name, record.RecNo, false); //TDB.TDBTableRecordRemove(dbIndex, name, record.RecNo); continue; } string[] keyArray = null; int[] valueArray = null; float[] floatArray = null; string[] stringValueArray = null; record.GetChangedIntFields(ref keyArray, ref valueArray); for (int i = 0; i < keyArray.Length; i++) { TDB.TDBFieldSetValueAsInteger(dbIndex, name, keyArray[i], record.RecNo, valueArray[i]); } keyArray = null; record.GetChangedStringFields(ref keyArray, ref stringValueArray); for (int i = 0; i < keyArray.Length; i++) { TDB.TDBFieldSetValueAsString(dbIndex, name, keyArray[i], record.RecNo, stringValueArray[i]); } keyArray = null; record.GetChangedFloatFields(ref keyArray, ref floatArray); for (int i = 0; i < keyArray.Length; i++) { TDB.TDBFieldSetValueAsFloat(dbIndex, name, keyArray[i], record.RecNo, floatArray[i]); } record.DiscardBackups(); } } } //TDB.TDBDatabaseCompact(dbIndex); //TDB.TDBSave(dbIndex); }
private void pictureBox1_Click(object sender, EventArgs e) { TDB f4 = new TDB(); f4.ShowDialog(); }
/// <summary> /// 检测未发送短信 /// </summary> /// <returns></returns> public static ActionResultVM SmsNotSent() { var vm = new ActionResultVM(); var listPrimaryKey = new List <string>(); try { string connectionString = string.Empty; //查询SQL var querySql = GlobalTo.GetValue("Task:QuerySql"); DataTable dt = null; //数据源连接字符串 if (Enum.TryParse(GlobalTo.GetValue("TypeDB"), true, out TypeDB TDB)) { connectionString = GlobalTo.Configuration.GetConnectionString(TDB.ToString()); switch (TDB) { case TypeDB.MySQL: dt = new Data.MySQL.MySQLHelper(connectionString).Query(querySql).Tables[0]; break; case TypeDB.SQLite: dt = new Data.SQLite.SQLiteHelper(connectionString).Query(querySql).Tables[0]; break; case TypeDB.Oracle: dt = new Data.Oracle.OracleHelper(connectionString).Query(querySql).Tables[0]; break; case TypeDB.SQLServer: dt = new Data.SQLServer.SQLServerHelper(connectionString).Query(querySql).Tables[0]; break; case TypeDB.PostgreSQL: dt = new Data.PostgreSQL.PostgreSQLHelper(connectionString).Query(querySql).Tables[0]; break; } } if (dt.Rows.Count > 0) { var listPhoneNumber = new List <string>(); var listSignName = new List <string>(); var TemplateCode = string.Empty; var listTemplateParamJson = new List <string>(); //表列名 var colPrimaryKey = GlobalTo.GetValue("Task:TableColumn:PrimaryKey"); var colPhoneNumber = GlobalTo.GetValue("Task:TableColumn:PhoneNumber"); var colSignName = GlobalTo.GetValue("Task:TableColumn:SignName"); var colTemplateCode = GlobalTo.GetValue("Task:TableColumn:TemplateCode"); var colTemplateParam = GlobalTo.GetValue("Task:TableColumn:TemplateParam"); foreach (DataRow dr in dt.Rows) { listPrimaryKey.Add(dr[colPrimaryKey].ToString()); listPhoneNumber.Add(dr[colPhoneNumber].ToString()); listSignName.Add(dr[colSignName].ToString()); if (string.IsNullOrWhiteSpace(TemplateCode)) { TemplateCode = dr[colTemplateCode].ToString(); } listTemplateParamJson.Add(dr[colTemplateParam].ToString()); } //发送参数 var dicAddQuery = new Dictionary <string, string> { { "PhoneNumberJson", listPhoneNumber.ToJson() }, { "SignNameJson", listSignName.ToJson() }, { "TemplateCode", TemplateCode }, { "TemplateParamJson", listTemplateParamJson.ToJson() } }; //调用发送方法 vm = SmsService.SendBatchSms(dicAddQuery); //发送成功 if (vm.Code == 200) { //修改状态 var updateSql = GlobalTo.GetValue("Task:UpdateSql"); updateSql = string.Format(updateSql, "'" + string.Join("','", listPrimaryKey) + "'"); int num = 0; switch (TDB) { case TypeDB.MySQL: num = new Data.MySQL.MySQLHelper(connectionString).ExecuteNonQuery(updateSql); break; case TypeDB.SQLite: num = new Data.SQLite.SQLiteHelper(connectionString).ExecuteNonQuery(updateSql); break; case TypeDB.Oracle: num = new Data.Oracle.OracleHelper(connectionString).ExecuteNonQuery(updateSql); break; case TypeDB.SQLServer: num = new Data.SQLServer.SQLServerHelper(connectionString).ExecuteNonQuery(updateSql); break; case TypeDB.PostgreSQL: num = new Data.PostgreSQL.PostgreSQLHelper(connectionString).ExecuteNonQuery(updateSql); break; } if (num <= 0) { vm.Msg += "(修改发送状态失败)"; } } } else { vm.Set(ARTag.lack); } } catch (Exception ex) { vm.Set(ex); } //日志记录 if (GlobalTo.GetValue <bool>("Logs:Enable")) { Core.ConsoleTo.Log(new { vm, listPrimaryKey }.ToJson() + Environment.NewLine); } return(vm); }