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

Вниз

TADOConnection.execute, что вернет?   Найти похожие ветки 

 
WhiteBarsik   (2006-11-08 11:46) [0]

Немного смущает принцип работы с TADOConnection.execute.
Может быть поправите и направите меня?

=============

var
   DS : TADODataSet;
  ConnRepl : TADOConnection;
begin
     ConnRepl := TADOConnection.create(nil);
DS := TADODataSet.create(nil); // Вот тут первый вопрос:
                                // обязательно создавать или выполнение Execute от
                                // TADOConnection вернет экзкмпляр уже готовый?

     DS.Recordset := ConnRepl.Execute("SELECT @@IDENTITY ident_ID");
FreeAndNil(DS) // А вот тут второй: нужно ли уничтожать предыдущий, или пусть мусором останеться а затем его новый вызов перекроет?
     DS.Recordset := ConnRepl.Execute("SELECT getdate");

end;

=============


 
Stanislav ©   (2006-11-08 11:58) [1]

Зачем так сложно?
DS точно уничтожать не нужно.


 
Stanislav ©   (2006-11-08 11:59) [2]

В смысле удалить нужно только в конце.


 
WhiteBarsik   (2006-11-08 12:10) [3]

Хорошо, а каков механизм работы второго execute? Не будет ли он порождать потерянные данные (в первом такте мы же получили в рекордсет какие-то записи...)?


 
Плохиш ©   (2006-11-08 12:16) [4]


> WhiteBarsik   (08.11.06 12:10) [3]
> Хорошо, а каков механизм работы второго execute?

Создаст ещё один набор данных. А в твоей программе а строке
> DS.Recordset := ConnRepl.Execute("SELECT getdate");
произойдёт ошибка доступа к памяти, т.к. объект DS больше не существует.


 
WhiteBarsik   (2006-11-08 12:18) [5]

Ну тогда последний вопрос: создаст ещё один набор...а вот если я не буду делать FreeAndNil(...), новый набор просто перекроет старый? И никаких потерь памяти?


 
sniknik ©   (2006-11-08 12:22) [6]

разделяй понятия, датасет дельфевый компонент, рекордсет интерфейс

интерфейс самоуничтожается при обнулении ссылок на него, т.е. если второй раз другой присвоить утечек памяти не произойдет, т.к. первоначальная ссылка снимется.  
а вот удаление компонента грозит последствиями...

и... зачем так сложно то?
специально хочеш получить не редактируемый датасет?, можно проще. снять коннект после запроса.


 
sniknik ©   (2006-11-08 12:23) [7]

> новый набор просто перекроет старый?
не перекроет а уничтожит (если нет еще гденибудь ссылок на него), и создаст новый.


 
WhiteBarsik   (2006-11-08 12:30) [8]

Все понял. Спасибо. Совсем забыл про разделения объектов и интерфейса...

Относительно нередактируемого, то да. Чтобы только данные и все. А что означает "снять коннект после запроса."? На небольшом примере не поясните?


 
sniknik ©   (2006-11-08 12:48) [9]

ADODataSet.Open;
ADODataSet.Connection:= nil;



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

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

Наверх




Память: 0.49 MB
Время: 0.043 c
3-1159267453
Climber
2006-09-26 14:44
2006.11.26
BDE & FoxPro


1-1161005590
id
2006-10-16 17:33
2006.11.26
Передача массива в процедуру в кач-ве var параметра.


4-1153121367
Чапаев
2006-07-17 11:29
2006.11.26
Буква загрузочного тома


6-1152140733
Корешь
2006-07-06 03:05
2006.11.26
icmp в indy 10


15-1162998875
Иксик
2006-11-08 18:14
2006.11.26
В Интернете появился сайт, на кот. указаны фамилии взяточников