private void UpdateDataToDB() { // создание соединения с БД SQLiteConnection connection = new SQLiteConnection(_connection); // команда для фиксации факта изменения записи SQLiteCommand fixdata = new SQLiteCommand(FixData.GetReplaceText(PersonInfo.tablename, FixData.FixType.Edit, _personID, _operName, DateTime.Now)); // создание команд для обновления SQLiteCommand updatePerson = PersonInfo.CreateUpdateCommand(); // инициализация комманды для Адресса прописки SQLiteCommand commandRegadr = _regadrID == -1 ? Adress.CreateInsertCommand() : Adress.CreateUpdateCommand(); // инициализация комманды для Адресса проживания SQLiteCommand commandFactadr = null; if (adressrealCheckBox.Checked) { commandFactadr = _factadrID == -1 ? Adress.CreateInsertCommand() : Adress.CreateUpdateCommand(); } // инициализация комманды для Места рождения SQLiteCommand commandBornadr = _bornadrID == -1 ? Adress.CreateInsertCommand() : Adress.CreateUpdateCommand(); // инициализация комманды для документа SQLiteCommand commandIDoc = _idocID == -1 ? IDocInfo.CreateInsertCommand() : IDocInfo.CreateUpdateCommand(); // присвоение подключения командам updatePerson.Connection = connection; commandRegadr.Connection = connection; if (commandFactadr != null) { commandFactadr.Connection = connection; } commandBornadr.Connection = connection; commandIDoc.Connection = connection; fixdata.Connection = connection; // заполнение команд параметрами SetRegAdressValues(commandRegadr); if (commandFactadr != null) { SetFactAdressValues(commandFactadr); } SetBornplaceValues(commandBornadr); SetDocValues(commandIDoc); // открытие соединения connection.Open(); // создание транзакции SQLiteTransaction transaction = connection.BeginTransaction(); // присвоение транзакции командам fixdata.Transaction = commandRegadr.Transaction = commandBornadr.Transaction = commandIDoc.Transaction = updatePerson.Transaction = transaction; if (commandFactadr != null) { commandFactadr.Transaction = transaction; } // выполнение запросов для вставки данных в смежные таблицы if (_regadrID == -1) { // вставка прописки и получение ID записи _regadrID = (long)commandRegadr.ExecuteScalar(); } else { // обновление записи commandRegadr.ExecuteNonQuery(); } // если фактический адресс проживания отличается от прописки if (commandFactadr != null && adressrealCheckBox.Checked) { if (_factadrID == -1) { // вставка адресса проживания и получение ID записи _factadrID = (long)commandFactadr.ExecuteScalar(); } else { // обновление записи commandFactadr.ExecuteNonQuery(); } } else // если адресс прописки совпадает с адрессом фактического проживания { _factadrID = _regadrID; } if (_bornadrID == -1) { // вставка места рождения и получение ID записи _bornadrID = (long)commandBornadr.ExecuteScalar(); } else { // обновление записи commandBornadr.ExecuteNonQuery(); } if (_idocID == -1) { // вставка документа и получение ID записи _idocID = (long)commandIDoc.ExecuteScalar(); } else { commandIDoc.ExecuteNonQuery(); } // заполнение команды вставки Персоны параметрами, // в том числе определенными ID ранее вставленных записей адрессов и документа SetPersonValues(updatePerson); // исполнение команды обновления Персоны updatePerson.ExecuteNonQuery(); fixdata.ExecuteNonQuery(); // подтаверждение транзакции transaction.Commit(); // закрытие соединения connection.Close(); }
private void InsertDataToDB() { // создание соединения с БД SQLiteConnection connection = new SQLiteConnection(_connection); // создание команд для вставки SQLiteCommand insPerson = PersonInfo.CreateInsertCommand(); SQLiteCommand insRegadr = Adress.CreateInsertCommand(); SQLiteCommand insFactadr = Adress.CreateInsertCommand(); SQLiteCommand insBornadr = Adress.CreateInsertCommand(); SQLiteCommand insIDoc = IDocInfo.CreateInsertCommand(); SQLiteCommand insFixdata = new SQLiteCommand(); SQLiteCommand insPersonOrg = new SQLiteCommand(); // присвоение подключения командам insPerson.Connection = connection; insRegadr.Connection = connection; insFactadr.Connection = connection; insBornadr.Connection = connection; insIDoc.Connection = connection; insFixdata.Connection = connection; insPersonOrg.Connection = connection; // заполнение команд параметрами SetRegAdressValues(insRegadr); SetFactAdressValues(insFactadr); SetBornplaceValues(insBornadr); SetDocValues(insIDoc); // открытие соединения connection.Open(); // создание транзакции SQLiteTransaction transaction = connection.BeginTransaction(); // присвоение транзакции командам insPersonOrg.Transaction = insFixdata.Transaction = insFactadr.Transaction = insRegadr.Transaction = insBornadr.Transaction = insIDoc.Transaction = insPerson.Transaction = transaction; // выполнение запросов для вставки данных в смежные таблицы // вставка прописки и получение ID записи _regadrID = (long)insRegadr.ExecuteScalar(); // если фактический адресс проживания отличается от прописки if (adressrealCheckBox.Checked) { // вставка адресса проживания и получение ID записи _factadrID = (long)insFactadr.ExecuteScalar(); } else // если адресс прописки совпадает с адрессом фактического проживания { _factadrID = _regadrID; } // вставка места рождения и получение ID записи _bornadrID = (long)insBornadr.ExecuteScalar(); // вставка документа и получение ID записи _idocID = (long)insIDoc.ExecuteScalar(); // заполнение команды вставки Персоны параметрами, // в том числе определенными ID ранее вставленных записей адрессов и документа SetPersonValues(insPerson); // исполнение команды вставки Персоны _personID = (long)insPerson.ExecuteScalar(); // выполнение запроса на фиксацию факта создания записи insFixdata.CommandText = FixData.GetReplaceText(PersonInfo.tablename, FixData.FixType.New, _personID, _operName, DateTime.Now); insFixdata.ExecuteNonQuery(); insPersonOrg.CommandText = PersonOrg.GetInsertPersonOrgText(_personID, _orgID); insPersonOrg.ExecuteScalar(); // подтверждение транзакции insRegadr.Transaction.Commit(); // закрытие соединения connection.Close(); }