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