Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Количество соединений и запросы 
V
    Опции темы
Fitc
Дата 9.2.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: нет
Всего: 4



Здравствуйте.
Вопрос такой: в чем отличие ADOConnection.Execute, ADOQuery.ExecSQL,ADOCommand.Execute. И какие еще есть подобные процедуры? 
А также если использовать многократно такие команды, то по идее должны создаваться многократные соединения, тогда хватит ли, например такого кода, что бы сохранять всегда одно соединение?

Цитата

with ADOQuery1 do
   begin
    // закрываем
    Close;
    // присваиваем Connection
    Connection :=ADOConnection1;
    SQL.Text := .........;
    // открываем датасет
    ExecSQL;
    // переводим Connection в Nil
    Connection := Nil;
   end;


То есть открыли соединение, отправили запрос, закрыли соединение.
 smile 

Это сообщение отредактировал(а) Fitc - 9.2.2010, 19:48
PM MAIL   Вверх
~FoX~
Дата 10.2.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 4
Всего: 68



Цитата(Fitc @  9.2.2010,  20:25 Найти цитируемый пост)
ADOConnection.Execute, ADOQuery.ExecSQL,ADOCommand.Execute.

ADOConnection - Выполняет подключение
ADOQuery - Выполняет SQL запрос, возвращает DataSet/RecordSet
ADOCommand - Выполняет команду, не возвращает результат в виде DataSet/RecordSet

Добавлено @ 21:26
Цитата(Fitc @  9.2.2010,  20:25 Найти цитируемый пост)
with ADOQuery1 do
   begin
    // закрываем
    Close;
    // присваиваем Connection
    Connection :=ADOConnection1;
    SQL.Text := .........;
    // открываем датасет
    ExecSQL;
    // переводим Connection в Nil
    Connection := Nil;
    Close; // <- Не забываем закрывать
   end;



Это сообщение отредактировал(а) ~FoX~ - 10.2.2010, 21:27


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Fitc
Дата 11.2.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: нет
Всего: 4



Цитата(~FoX~ @  10.2.2010,  21:25 Найти цитируемый пост)
 Close; // <- Не забываем закрывать

А что при ExecSQL ADOQuery вдруг становится open?
для чего это надо?
PM MAIL   Вверх
Данкинг
Дата 11.2.2010, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Fitc @  11.2.2010,  18:46 Найти цитируемый пост)
А что при ExecSQL ADOQuery вдруг становится open?

Видимо, тут имеется в виду закрытие ADOQuery "на всякий случай" (если вдруг он открыт) перед какими-либо действиями с ним.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Fitc
Дата 13.2.2010, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: нет
Всего: 4



Цитата(Данкинг @  11.2.2010,  19:48 Найти цитируемый пост)
Видимо, тут имеется в виду закрытие ADOQuery "на всякий случай" (если вдруг он открыт) перед какими-либо действиями с ним. 

Посмотри повнимательнее, там в самом начале закрывается ADOQuery
Цитата

with ADOQuery1 do
   begin
    // закрываем
    Close;
    // присваиваем Connection
    Connection :=ADOConnection1;
    SQL.Text := .........;
    // открываем датасет
    ExecSQL;
    // переводим Connection в Nil
    Connection := Nil;
    Close; // <- Не забываем закрывать
   end;

По теме отвечаем, ребята)
Вобщем то сам догадываюсь, что этого кода достаточно для поддержания одиночных сеансов соединения...
Вопрос был чисто для собственной уверенности...

Это сообщение отредактировал(а) Fitc - 13.2.2010, 18:23
PM MAIL   Вверх
~FoX~
Дата 14.2.2010, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 4
Всего: 68



Цитата(Fitc @  11.2.2010,  19:46 Найти цитируемый пост)
А что при ExecSQL ADOQuery вдруг становится open?

Цитата(Fitc @  13.2.2010,  19:11 Найти цитируемый пост)
Посмотри повнимательнее, там в самом начале закрывается ADOQuery

Цитата(Fitc @  13.2.2010,  19:11 Найти цитируемый пост)
    SQL.Text := .........;
// открываем датасет

Не известно что подразумевается под словами "открываем датасет".... Да и выполнение запросов с закрытым коннектом, это ИМХО моветон....

Добавлено @ 04:57
Цитата(Fitc @  13.2.2010,  19:11 Найти цитируемый пост)
Вобщем то сам догадываюсь, что этого кода достаточно для поддержания одиночных сеансов соединения...

Этого достаточно при условии, что ты не вносишь изменений в данные и/или не добавляешь/удаляешь их.... Ибо ExecSQL возвращает только количество строк и не возвращает курсор... Следовательно ни о каких дествиях над данными не может быть речи

Это сообщение отредактировал(а) ~FoX~ - 14.2.2010, 05:04


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Fitc
Дата 14.2.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: нет
Всего: 4



Цитата(~FoX~ @  14.2.2010,  04:52 Найти цитируемый пост)
Не известно что подразумевается под словами "открываем датасет"....

Код выдран из одной статьи вместе с комментариями, что автор имел ввиду я не знаю, оставил как было... Если надо могу дать источник
Цитата(~FoX~ @  14.2.2010,  04:52 Найти цитируемый пост)
Да и выполнение запросов с закрытым коннектом, это ИМХО моветон....

почему, по вашему,  коннет закрыт, если по умолчанию свойство ADOConnection1.Connected стоит в true?
Цитата(~FoX~ @  14.2.2010,  04:52 Найти цитируемый пост)
Этого достаточно при условии, что ты не вносишь изменений в данные и/или не добавляешь/удаляешь их.... Ибо ExecSQL возвращает только количество строк и не возвращает курсор... Следовательно ни о каких дествиях над данными не может быть речи

Насколько я знаю ExecSQL не возвращает данные клиенту, удаление/редактирование/добавление записей осуществиться на сервере, так почему же действий с данными, по вашему, не произойдет?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.