Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.008 c
8-15164
Aleksey Rykov
2002-09-13 01:48
2003.01.06
DirectDraw в оконном режиме


3-14916
pilot
2002-12-13 15:52
2003.01.06
Cannot use array of Field values with Expression Indices


3-14948
mic_2000
2002-12-13 17:37
2003.01.06
Пересчет данных перед отображением в DBGRID


14-15257
linker
2002-12-15 04:44
2003.01.06
Delphi 2!


14-15299
stone
2002-12-18 11:30
2003.01.06
FAQ для оверклокеров и фрикеров





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