Главная страница
    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.47 MB
Время: 0.035 c
14-1089575518
VID
2004-07-11 23:51
2004.08.01
Откуда бы достать русский хелп для ZoneAlarm ?


1-1089874924
Семенов
2004-07-15 11:02
2004.08.01
Как определить загружена программа или нет?


4-1087542911
alexdbases
2004-06-18 11:15
2004.08.01
Появление нового процесса в системе.


11-1046110368
KSV
2003-02-24 21:12
2004.08.01
Плагин


1-1089818625
DreymanD
2004-07-14 19:23
2004.08.01
Запаковка картинок, содержащихся в листе(TListBox)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский