Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MySQL и несколько insert-ов [D7, MySQL]


Раиса ©   (2010-02-15 15:14:00) 

В программе пишу так (использую ADOQuery):
START TRANSACTION; insert into table1 ......; insert into table2 ...;  COMMIT;
Выдается синтаксическая ошибка. Если текст запроса сохраняю в файле, а затем его выполняю через SQLyog (например), то всё записывается в таблицы.
Помогите, пожалуйста, найти ошибку.


Ega23   (2010-02-16 11:37:00) [1]

Коль, давай не будем холивара начинать? Тем более, что я не фанат TADOQuery, как ты заметил... :)


sniknik   (2010-02-16 11:33:00) [2]

> поддержка старых BDE-шных проектов.
имхо, но это тоже недостаток, т.к. он не поддерживает, а только "делает вид". чем делать криво, уж лучше бы не делал ничего... и тогда бы армия "начинающих", но знакомых почему то с BDE программистов, вынуждена была бы учится, а не просто тупо заменять компоненты. (не было бы возможности такого самообмана, типа "взял новое, значит работаю по новому". а на самом деле по старой логике, и с исковерканным пониманием)

а когда знаешь, то заменить одно на другое нет проблем пусть даже TTable на TADODataSet (и даже также криво но быстро как с этими поддержками BDE, но тут хоть с полным осознанием кривизны. а можно чуток подольше но нормально).


Ega23   (2010-02-16 10:22:00) [3]


> Со всеми достоинствами
> ??? это какими?
> недостатки видел, достоинств ни одного...


А достоинство только одно - поддержка старых BDE-шных проектов.


12   (2010-02-16 10:11:00) [4]


> откатывается транзакция

куда ж она денется, когда разденется


> хотелось весь запрос через ;  написать

там программа (SQLyog? или как там)наверняка распарсивает строку, и делеает так же,
begintran
ExecSQL
ExecSQL
committran


> > Со всеми достоинствами
> ??? это какими?
> недостатки видел, достоинств ни одного...

это какие?


Раиса   (2010-02-16 09:07:00) [5]

> 12 ©   (15.02.10 15:18) [2]
Воспользовалась этим советом. Вроде бы откатывается транзакция в случае ошибок.
А так хотелось весь запрос через ;  написать как в MS SQL, но пришлось писать:
ADOQuery1.ExecSQL;
..
ADOQuery1.ExecSQL;


sniknik   (2010-02-15 20:19:00) [6]

а понял, у тебя 2 таблицы... не обратил внимания.


sniknik   (2010-02-15 20:18:00) [7]

> А с помощью TADOCommand  можно будет весь запрос через ; написать?
а зачем тут? у mysql в одном инсерте позволительна массовая вставка. вроде бы...
вот был бы у тебя mssql тогда можно было бы (но и там не нужно бы).

> Со всеми достоинствами
??? это какими?
недостатки видел, достоинств ни одного...


12   (2010-02-15 16:38:00) [8]

чего еще добавить :)
+1

старый фидошный анекдот:
Народ, пошли пиво пить?
+1
+1
..
+1


Ega23   (2010-02-15 16:34:00) [9]


> А с помощью TADOCommand  можно будет весь запрос через ;
>  написать?


Нет, должна быть атомарность команд.
Речь о том, что TADOQuery это гибрид TADOCommand и TADODataSet в одном флаконе. Со всеми достоинствами, но также и со всеми недостатками. Введён исключительно ради совместимости со старыми BDE-шными проектами.


Раиса   (2010-02-15 16:31:00) [10]


> Ega23 ©   (15.02.10 15:41) [4]


> 12 ©   (15.02.10 15:48) [5]

А с помощью TADOCommand  можно будет весь запрос через ; написать?


12   (2010-02-15 15:48:00) [11]


> используй для данной операции TADOCommand

+1


Ega23   (2010-02-15 15:41:00) [12]

Совет: убери TADOQuery, используй для данной операции TADOCommand


Раиса   (2010-02-15 15:37:00) [13]

Спасибо за ответы.

> 12 ©   (15.02.10 15:18) [2]

Вроде бы нормально.


12   (2010-02-15 15:18:00) [14]

а так если?

 ADOConnection1.BeginTrans;
 ADOQuery1.ExecSQL;
 ..
 ADOQuery1.ExecSQL;
 ADOConnection1.CommitTrans;


Виталий Панасенко(дом)   (2010-02-15 15:16:00) [15]

да просто это скрипт, я так понимаю... SQLyog это чудо умеет их выполнять, а компоненты АДО - нет.. только одну команду.. я так думаю


Наверх

Титульная страница Поиск, карта сайта Написать письмо