public Row(uint ID, DataBase.State InUse, object[] Values) { this.ID = ID; this.InUse = InUse; this.Values = Values; }
public static bool SaveToDB(DataBase.ISTable table, uint id, DataBase.State state, object[] values) { //искать и заменять по индексерам полей неполучится, т.к. записи приходят уже измененные и невозможно определить чем оно там было до изменения //измененная запись придет в своём измененном виде //если происходят многократные изменения ключевых полей, тогда хреново, т.к. будут приходить многократные дубликаты с измененными ключевыми полями var RowExist = (bool)table.QUERRY(DataBase.State.None).EXIST.WHERE.ID(id).DO()[0].Value; if (RowExist) { var Set = table.QUERRY(DataBase.State.None).SET; switch (state) { case DataBase.State.Deleted: Set.Delete(); break; case DataBase.State.Normal: Set.UnDelete(); break; } try { DataBase.ATSettings.AllowQuerryAutoConvertTypes = true; for (int i = 0; i < values.Length; i++) { if (values[i] != null) { Set.C(i, values[i]); } } Set.WHERE.ID(id).DO(); } catch (Exception ex) { DataBase.ATSettings.AllowQuerryAutoConvertTypes = false; if (MessageBox.Show("В процессе добавления записи номер " + id.ToString() + " возникла ошибка:" + ex.Message.ToString() + "\nВы хотите продолжить загрузку?", "Ошибка", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.No) { return(false); } } DataBase.ATSettings.AllowQuerryAutoConvertTypes = false; } else { try { return(table.Rows.Add(id, values, state)); } catch (Exception ex) { if (MessageBox.Show("В процессе добавления записи номер " + id.ToString() + " возникла ошибка:" + ex.Message.ToString() + "\nВы хотите продолжить загрузку?", "Ошибка", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.No) { return(false); } } } return(true); }