Форум: "Начинающим";
Текущий архив: 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