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