Форум: "Базы";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];
ВнизРабота с ADO или ODBC без использования объектов(!) Найти похожие ветки
← →
RAA (2002-12-12 15:08) [0]У меня есть прогруммулька вида service её размер сейчас получился 18кб....если работать через объект TADOQuery то
Во первых размер проги сразу увеличиваеться на 250 кило((((
А во вторых она у меня просто нивкакую нихочет проходить процедуру MainADO:=TADOQuery.create(nil);
Помогите....конечно хотелось бы не использовать модуль ADODB а сделать всё ручками по новому(!))))
← →
asmith (2002-12-12 16:57) [1]Я это проходил, нужно было в сервисе работать с ADO и не хотелось, чтобы написанный без VCL сервис сильно раздулся. Импортировал биб-ку типов ADO и работал напрямую с интерфейсами примерно так (обработка ошибок опущена для компактности):
var
szConnStr : string;
aConnection : Connection;
Data : Recordset;
szQueryString : string;
...
CoInitialize(nil); // это обязательно-без этого видимо твоя TADOQuery не работала
aConnection := CoConnection.Create();
szConnStr := GetConnectionString();
OleVariant(aConnection).Open(szConnection);
Data := CoRecordset.Create();
Data.Set_ActiveConnection(aConnection);
Data.CursorLocation := adUseClient;
szQueryString := "select * from SomeTable";
Data.Open(szQueryString, szConnection, adOpenKeyset, adLockBatchOptimistic, adCmdText);
// using data here
Data.Close();
Data := nil;
aConnection := nil;
CoUninitialize();
...
Если размер покажется великоватым (не будет 250 к, но все же), можно руками вычистить модуль импорта биб-ки типа от вещей, которые не будут использоваться), у меня после этого сервисы с довольно развитой функциональностью весили порядка 70 К.
← →
RAA (2002-12-12 17:44) [2]aConnection : Connection;
А :Connection это из какого модуля?
asmith пасибо тебе уже более понятно куда двигаться(!)))
← →
RAA (2002-12-12 17:59) [3]Я даже подключил модуль adodb целиком но всё равно он так и не нашёл CoInitialize();
Если не сложно опиши поподробнее(!) плз(!)
← →
sniknik (2002-12-12 18:09) [4]CoInitialize(); в ActiveX
а для остального сделай импорт ADO, меню Component-> Import ActiveX Control. по моему речь об этом.
а вот модуль adodb и другие тебе не нужен без лишних килобайт не обойдется. :о)
← →
RAA (2002-12-12 19:24) [5]Да с модулями adodb и activex TADOQuery заработал но и размер практически с никакой структурой весит 440кило(!)))
asmith - плз поподробней распиши что и как надо сделать(!)))
← →
asmith (2002-12-12 19:48) [6]sniknik почти прав - Project->Import Type Library->выбираешь Microsoft ActiveX Data Objects 2.X Library->выключаешь внизу Generate Component Wrapper->жмешь Create Unit->Delphi сгенерит ADODB_TLB.PAS - юзаем для работы с ADO только ее и больши ничего! Включаем ее в проект и далее как ранее описывалось. И все эти Connection, Recordset и все остальное - описано в ней. Кстати, вместо этого подхода (раннего связывания) можешь вместо Connection, Recordset написать просто OleVariant и заюзать позднее связывание примерно так:
var
aConnection : OleVariant;
Data : OleVariant;
...
CoInitialize(nil);
aConnection := CreateOleObject("ADODB.Connection");
...
Data := CreateOleObject("ADODB.Recordset");
и так далее.
← →
RAA (2002-12-12 20:01) [7]Пасибо Вам(!)
Завтра опробую(!)))
← →
RAA (2002-12-12 21:50) [8]asmith У меня как-то странно без всякой инфростуктуры размер проги разросся до 263 кило(((((((
← →
asmith (2002-12-13 17:03) [9]Проверь, не остались ли где ссылки на неиспользуемые модули (uses). Можно также включить генерацию линкером Мар-файла и поразглядывать его на предмет наличия ненужных модулей. А кроме того, стоит соптимизировать (в смысле немного порезать) ADODB_TLB.PAS, если нет времени и желания это делать - могу прислать его мылом.
← →
RAA (2002-12-13 21:35) [10]asmith >> Друг будь любезен кинь на мыло golovin@samaraenergo.ru
У меня действительно сейчас с временем просто бяда...сессия однако.......
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c