Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Transaction 
:(
    Опции темы
q12345
Дата 13.12.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.10.2009

Репутация: нет
Всего: нет



Уже не раз поднималась эта тема,но конкретных примеров я так и не увидел( Понимаю,что такая конструкция:

try
ADOConnection1.BeginTrans;

ADOConnection1.CommitTrans;
except

ROLLBACK TRANS;
end;

А что конкретно писать??
Программа записывает данные в таблицу на сервер,надо если что-то не записалось, то произвести откат.Подскажите пожалуйста. 
PM MAIL   Вверх
Akella
Дата 13.12.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Код

try
ADOConnection1.BeginTrans;
добавляем данные
что-то ещё можно сделать

except
  в случае ошибки выполнится этот код
  ROLLBACK TRANS;
end;
если не было ошибок, то продолжаем....

ADOConnection1.CommitTrans;


(пользуйся тэгами код)
PM MAIL   Вверх
q12345
  Дата 13.12.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.10.2009

Репутация: нет
Всего: нет



Спасибо,все понял
PM MAIL   Вверх
RomanEEP
Дата 13.12.2009, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: нет
Всего: 8



Мне кажется первый вариант был правильный. Дело в том, что если возникнет исключение в методе Commit, то транзакция должна откатиться.
PM MAIL   Вверх
Akella
Дата 13.12.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



RomanEEP, а зачем тогда вызывать rollback, если не было commit?
PM MAIL   Вверх
RomanEEP
Дата 14.12.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: нет
Всего: 8



Цитата(Akella @  13.12.2009,  22:21 Найти цитируемый пост)
RomanEEP, а зачем тогда вызывать rollback, если не было commit?

Akella, в твоем примере роллбак тоже делается если коммита не было
И еще я думаю BeginTrans() надо вынести до блок try, т.е. так

Код

ADOConnection1.BeginTrans;
try
  //добавляем данные
  //что-то ещё можно сделать
  ADOConnection1.CommitTrans;
except
  в случае ошибки выполнится этот код
  ROLLBACK TRANS;
end;

PM MAIL   Вверх
Akella
Дата 14.12.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Угу
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.