-
В программе пишу так (использую ADOQuery): START TRANSACTION; insert into table1 ......; insert into table2 ...; COMMIT; Выдается синтаксическая ошибка. Если текст запроса сохраняю в файле, а затем его выполняю через SQLyog (например), то всё записывается в таблицы. Помогите, пожалуйста, найти ошибку.
-
да просто это скрипт, я так понимаю... SQLyog это чудо умеет их выполнять, а компоненты АДО - нет.. только одну команду.. я так думаю
-
а так если?
ADOConnection1.BeginTrans; ADOQuery1.ExecSQL; .. ADOQuery1.ExecSQL; ADOConnection1.CommitTrans;
-
Спасибо за ответы.
> 12 © (15.02.10 15:18) [2]
Вроде бы нормально.
-
Совет: убери TADOQuery, используй для данной операции TADOCommand
-
> используй для данной операции TADOCommand
+1
-
> Ega23 © (15.02.10 15:41) [4]
> 12 © (15.02.10 15:48) [5]
А с помощью TADOCommand можно будет весь запрос через ; написать?
-
> А с помощью TADOCommand можно будет весь запрос через ; > написать?
Нет, должна быть атомарность команд. Речь о том, что TADOQuery это гибрид TADOCommand и TADODataSet в одном флаконе. Со всеми достоинствами, но также и со всеми недостатками. Введён исключительно ради совместимости со старыми BDE-шными проектами.
-
чего еще добавить :) +1
старый фидошный анекдот: Народ, пошли пиво пить? +1 +1 .. +1
-
> А с помощью TADOCommand можно будет весь запрос через ; написать? а зачем тут? у mysql в одном инсерте позволительна массовая вставка. вроде бы... вот был бы у тебя mssql тогда можно было бы (но и там не нужно бы).
> Со всеми достоинствами ??? это какими? недостатки видел, достоинств ни одного...
-
а понял, у тебя 2 таблицы... не обратил внимания.
-
> 12 © (15.02.10 15:18) [2] Воспользовалась этим советом. Вроде бы откатывается транзакция в случае ошибок. А так хотелось весь запрос через ; написать как в MS SQL, но пришлось писать: ADOQuery1.ExecSQL; .. ADOQuery1.ExecSQL;
-
> откатывается транзакция
куда ж она денется, когда разденется
> хотелось весь запрос через ; написать
там программа (SQLyog? или как там)наверняка распарсивает строку, и делеает так же, begintran ExecSQL ExecSQL committran
> > Со всеми достоинствами > ??? это какими? > недостатки видел, достоинств ни одного...
это какие?
-
> Со всеми достоинствами > ??? это какими? > недостатки видел, достоинств ни одного...
А достоинство только одно - поддержка старых BDE-шных проектов.
-
> поддержка старых BDE-шных проектов. имхо, но это тоже недостаток, т.к. он не поддерживает, а только "делает вид". чем делать криво, уж лучше бы не делал ничего... и тогда бы армия "начинающих", но знакомых почему то с BDE программистов, вынуждена была бы учится, а не просто тупо заменять компоненты. (не было бы возможности такого самообмана, типа "взял новое, значит работаю по новому". а на самом деле по старой логике, и с исковерканным пониманием)
а когда знаешь, то заменить одно на другое нет проблем пусть даже TTable на TADODataSet (и даже также криво но быстро как с этими поддержками BDE, но тут хоть с полным осознанием кривизны. а можно чуток подольше но нормально).
-
Коль, давай не будем холивара начинать? Тем более, что я не фанат TADOQuery, как ты заметил... :)
|