Форум: "Базы";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
ВнизMySQL и несколько insert-ов Найти похожие ветки
← →
Раиса © (2010-02-15 15:14) [0]В программе пишу так (использую ADOQuery):
START TRANSACTION; insert into table1 ......; insert into table2 ...; COMMIT;
Выдается синтаксическая ошибка. Если текст запроса сохраняю в файле, а затем его выполняю через SQLyog (например), то всё записывается в таблицы.
Помогите, пожалуйста, найти ошибку.
← →
Виталий Панасенко(дом) (2010-02-15 15:16) [1]да просто это скрипт, я так понимаю... SQLyog это чудо умеет их выполнять, а компоненты АДО - нет.. только одну команду.. я так думаю
← →
12 © (2010-02-15 15:18) [2]а так если?
ADOConnection1.BeginTrans;
ADOQuery1.ExecSQL;
..
ADOQuery1.ExecSQL;
ADOConnection1.CommitTrans;
← →
Раиса © (2010-02-15 15:37) [3]Спасибо за ответы.
> 12 © (15.02.10 15:18) [2]
Вроде бы нормально.
← →
Ega23 © (2010-02-15 15:41) [4]Совет: убери TADOQuery, используй для данной операции TADOCommand
← →
12 © (2010-02-15 15:48) [5]
> используй для данной операции TADOCommand
+1
← →
Раиса © (2010-02-15 16:31) [6]
> Ega23 © (15.02.10 15:41) [4]
> 12 © (15.02.10 15:48) [5]
А с помощью TADOCommand можно будет весь запрос через ; написать?
← →
Ega23 © (2010-02-15 16:34) [7]
> А с помощью TADOCommand можно будет весь запрос через ;
> написать?
Нет, должна быть атомарность команд.
Речь о том, что TADOQuery это гибрид TADOCommand и TADODataSet в одном флаконе. Со всеми достоинствами, но также и со всеми недостатками. Введён исключительно ради совместимости со старыми BDE-шными проектами.
← →
12 © (2010-02-15 16:38) [8]чего еще добавить :)
+1
старый фидошный анекдот:
Народ, пошли пиво пить?
+1
+1
..
+1
← →
sniknik © (2010-02-15 20:18) [9]> А с помощью TADOCommand можно будет весь запрос через ; написать?
а зачем тут? у mysql в одном инсерте позволительна массовая вставка. вроде бы...
вот был бы у тебя mssql тогда можно было бы (но и там не нужно бы).
> Со всеми достоинствами
??? это какими?
недостатки видел, достоинств ни одного...
← →
sniknik © (2010-02-15 20:19) [10]а понял, у тебя 2 таблицы... не обратил внимания.
← →
Раиса © (2010-02-16 09:07) [11]> 12 © (15.02.10 15:18) [2]
Воспользовалась этим советом. Вроде бы откатывается транзакция в случае ошибок.
А так хотелось весь запрос через ; написать как в MS SQL, но пришлось писать:
ADOQuery1.ExecSQL;
..
ADOQuery1.ExecSQL;
← →
12 © (2010-02-16 10:11) [12]
> откатывается транзакция
куда ж она денется, когда разденется
> хотелось весь запрос через ; написать
там программа (SQLyog? или как там)наверняка распарсивает строку, и делеает так же,
begintran
ExecSQL
ExecSQL
committran
> > Со всеми достоинствами
> ??? это какими?
> недостатки видел, достоинств ни одного...
это какие?
← →
Ega23 © (2010-02-16 10:22) [13]
> Со всеми достоинствами
> ??? это какими?
> недостатки видел, достоинств ни одного...
А достоинство только одно - поддержка старых BDE-шных проектов.
← →
sniknik © (2010-02-16 11:33) [14]> поддержка старых BDE-шных проектов.
имхо, но это тоже недостаток, т.к. он не поддерживает, а только "делает вид". чем делать криво, уж лучше бы не делал ничего... и тогда бы армия "начинающих", но знакомых почему то с BDE программистов, вынуждена была бы учится, а не просто тупо заменять компоненты. (не было бы возможности такого самообмана, типа "взял новое, значит работаю по новому". а на самом деле по старой логике, и с исковерканным пониманием)
а когда знаешь, то заменить одно на другое нет проблем пусть даже TTable на TADODataSet (и даже также криво но быстро как с этими поддержками BDE, но тут хоть с полным осознанием кривизны. а можно чуток подольше но нормально).
← →
Ega23 © (2010-02-16 11:37) [15]Коль, давай не будем холивара начинать? Тем более, что я не фанат TADOQuery, как ты заметил... :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c