예제 #1
0
        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();
        }