Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
2-1162918389
Серый
2006-11-07 19:53
2006.11.26
Бегущая строка


11-1139334284
goit
2006-02-07 20:44
2006.11.26
Помогите с trayIcon


8-1144910763
jakata
2006-04-13 10:46
2006.11.26
захват с 4 камер


2-1162985547
Благодарный слушатель
2006-11-08 14:32
2006.11.26
Сложная математика


2-1162794333
Minimum
2006-11-06 09:25
2006.11.26
Combobox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский