Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

ZeosDBO. Несколько запросов   Найти похожие ветки 

 
Terminus   (2004-07-05 17:15) [0]

Господа, рабротал ли кто с ZeosDBO v6 + MySQL v4?
Проблема в следующем.
Пишу такой примерно код:

var
 SQLQuery: TZQuery;

SQLQuery.SQL.Clear;
SQLQuery.SQL.Add("INSERT INTO users (name) VALUES (First)");
SQLQuery.SQL.Add("INSERT INTO users (name) VALUES (Second)");
SQLQuery.ExecSQL;

Так вот при этом вылетает ошибка синтаксиса MySQL во второй строчке. :(. Если выполнить запросы по очереди, т.е. после первого сделать ExecSQL и SQL.Clear, то все нормально, а вот подать несколько запросов за раз не получается. Попытка ставить в конце запроса ";" к успеху не приводила. :( Может кто сталкивался в этим?

P.S.: В самом запросе ошибок нет, база создана, таблица, поля, все ok...


 
Соловьев ©   (2004-07-05 17:17) [1]

выполнять запросы по очереди


 
Sir John ©   (2004-07-05 17:29) [2]

для выполения нескольких строк запроса одновременно используйте
ZBatchSQL


 
Terminus   (2004-07-05 17:39) [3]

Хотите смейтесь, хотите нет, а такого компонента в ZeosDBO нет :(. А мне потребуется в ММОРПГ делать несколько дексятков INSERT за раз, а множественное ExecSQL все таки не ускоряет процесс :)


 
Terminus   (2004-07-05 17:41) [4]

И еще. Зачем тогда ZQuery вообще свойство SQL как набор строк, если выпонить можно только одну операцию? :) Или может там какой-то разделитель ставить надо другой? Пробовал Chr(10)... без толку...


 
Nikolay M. ©   (2004-07-05 17:44) [5]

Если нужно делать быструю вставку, то быстрее всего будет подготовить текстовый файлик того вида, который ты напрасно пытаешься выполнить как один запрос и подать его (файл) на вход isql.


 
Курдль ©   (2004-07-05 17:44) [6]

А разделитель выражений? Не знаю, как для мускула, но для оракла - /
для сайбэйса - ;


 
sniknik ©   (2004-07-05 17:50) [7]

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

> разделитель ставить надо другой?
если и есть такой то на сайте MySQL наверняка о нем написано.


 
Sir John ©   (2004-07-05 17:53) [8]

<>ответ:Terminus  
хотите смейтесь, хотите нет - есть!
я использую zeosdbo-5.4.1-stable. Скорее всего Вы не все установили


 
Terminus   (2004-07-05 18:01) [9]

Мда, походу, нет в MySQL разделителей... Прийдется делать сотню ExecSQL :(

Nikolay M.

А как в таком случае будет выглядеть подгрузка файла и выполнение запроса? Ведь в любом случае все сведется к многострочному SQLQuery.SQL и ExecSQL с ошибкой в конце... Или я не понял мысль :)

sniknik

А можно чуть поподробнее? Если речь идет просто о цикле типа

for i:=0 to Users.Count-1 do
begin
 SQLQuery.SQL.Clear;
 SQLQuery.SQL.Add("INSERT INTO users (name) VALUES ("""+Users.Items[i].Name+""")");
 SQLQuery.ExecSQL;
end;
То это процесс не ускорит, боюсь... Это только место сэкономит. :)


 
Соловьев ©   (2004-07-05 18:03) [10]


> это процесс не ускорит, боюсь... Это только место сэкономит.
> :)

тебе же сказали - параметры!


 
Terminus   (2004-07-05 18:05) [11]

Sir John

Увы, в моем дистрибутиве нет ни намека на этот компонент. У меня v6.1.5

Сайт http://zeoslib.net/ лежит, как, кстати, и gamedev.ru и Аська. Или это только у меня? :)


 
Terminus   (2004-07-05 18:07) [12]

Соловьев

Ну вот я и прошу чуть подробнее об этом :). Документация как-то не особо помогает...


 
sniknik ©   (2004-07-05 18:14) [13]

чуть подробнее об этом :)
SQLQuery.SQL.Clear;
SQLQuery.SQL.Add("INSERT INTO users (name) VALUES (:name);
for i:=0 to Users.Count-1 do begin
 SQLQuery.Params[0].value:= Users.Items[i].Name;
 SQLQuery.ExecSQL;
end;


примерно так, воможны вариации (Params/Parameters, Prepare, asString, ... х.з.)
(парамбайнейм лучше не использовать)


 
Terminus   (2004-07-05 19:57) [14]

Ага... За ценный совет спасибо, попробую. :) Просто с параметрами тут я еще не успел столкнуться...


 
Sir John ©   (2004-07-05 20:45) [15]

http://www.zeoslib.net работает. Без проблем открывается!


 
Terminus   (2004-07-05 22:06) [16]

Сейчас да, открывается :)

Спасибо всем, маневр с параметрами удался...



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.055 c
1-1090151824
Вопрос
2004-07-18 15:57
2004.08.01
PenPos или "как нарисовать линию"


3-1089294262
Falendysh
2004-07-08 17:44
2004.08.01
Проблема с Blob --> Jpeg


3-1089282948
Tempo
2004-07-08 14:35
2004.08.01
Как программно добавить данные в DBGrid?


4-1087153642
Makhanev A.S.
2004-06-13 23:07
2004.08.01
Хук на смену caption а окна


4-1087385868
Regis
2004-06-16 15:37
2004.08.01
LPT в Win2k