powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема с SQL
4 сообщений из 4, страница 1 из 1
Проблема с SQL
    #35031692
bn1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла необходимость в программе которая могла бы выполнять запросы SQL.
Вариант их выполнения через ODBC, как оказалось неподходит, из за его несовершенства.
Одни и те же запросы выполнялись в Cache SQL Managere и сообщали загадочное сообщение General SQL Error, при выполнении его через любой вариант обращения к ОДБС драйверу на любой версии Каше вплоть до 2007. В оправдание драйвера следует заметить что классы были достаточно оригинальны и что на простых классах все рабоало вполне нормально, однако все шло к тому чтобы использовать интерфейс ActiveX.

Ниже приведенный пример должен выполнять произвольный запрос и загружать данные во временную таблицу, скорость загрузки в эту таблицу незначительна, но скорость выполнения конструкции :

while(Result.OleFunction("next"))
for (int n = 1;n < ColCount ;n++)
Result.OleFunction("GetDataAsString",n);

Составляет около 3-х секунд на 1000 записей, 15 000 записей грузятся около 1 минуты, хотя и ОДБС и SQL Manager загружают 15 000 за 1 секунду.

Полный текст:

Variant Factory = CreateOleObject("CacheObject.Factory");
Variant Connect = Factory.OleFunction("Connect", "cn_iptcp:127.0.0.1[1972]:TEMP");
Variant Result = Factory.OleFunction("DynamicSQL", Memo1->Text.c_str());
int ColCount = Result.OleFunction("GetColumnCount");
Result.OleFunction("SetRunTimeMode",1);
while(Result.OleFunction("next")){
RxMemoryData1->Insert();
for (int n = 1;n < ColCount ;n++)
try{
RxMemoryData1->Fields->Fields[n-1]->AsString = Result.OleFunction("GetDataAsString",n);
} catch(...){;}

Подскажите пожалуста что исправить для получения приемлемой скорости.
...
Рейтинг: 0 / 0
Проблема с SQL
    #35031944
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько времени выполняется
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Variant Factory = CreateOleObject("CacheObject.Factory");
Variant Connect = Factory.OleFunction("Connect", "cn_iptcp:127.0.0.1[1972]:TEMP");
Variant Result = Factory.OleFunction("DynamicSQL", Memo1->Text.c_str());
int ColCount = Result.OleFunction("GetColumnCount");
Result.OleFunction("SetRunTimeMode", 1 );
while(Result.OleFunction("next")){
   RxMemoryData1->Insert();
 /*
   for (int n = 1;n < ColCount ;n++)
     try{
      RxMemoryData1->Fields->Fields[n-1]->AsString = Result.OleFunction("GetDataAsString",n);
   } catch(...){;}
 */
}

На простом запросе без группировок и сортировок ?
...
Рейтинг: 0 / 0
Проблема с SQL
    #35032103
bn1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
String ColName;
clock_t start, end;

Variant Factory = CreateOleObject("CacheObject.Factory");
Variant Temp;
Variant Connect = Factory.OleFunction("Connect", "cn_iptcp:127.0.0.1[1972]:PHARMACY");
Variant Result = Factory.OleFunction("DynamicSQL", Memo1->Text.c_str());
if(!Result.OleFunction("execute")) return ShowMessage("SQL ERROR");
int ColCount = Result.OleFunction("GetColumnCount");
RxMemoryData1->FieldDefs->Clear();
start = clock();
for (int n = 1;n < ColCount ;n++) {
ColName = Result.OleFunction("GetColumnName",n);
RxMemoryData1->FieldDefs->Add(ColName,ftString,50);
}
RxMemoryData1->Open();
Result.OleFunction("SetRunTimeMode",1);
while(Result.OleFunction("next")){
RxMemoryData1->Insert();
/*
for (int n = 1;n < ColCount ;n++)
try{
RxMemoryData1->Fields->Fields[n-1]->AsString = Result.OleFunction("GetDataAsString",n);
} catch(...){;}
*/
}
end = clock();

Factory = Null,Connect = Null;
ShowMessage((end - start) / CLK_TCK);

Выполняется 4,6 секунды а если раскоментировать 53,5
...
Рейтинг: 0 / 0
Проблема с SQL
    #35032109
bn1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
14 столбцов 16 000 строк 2243 ms - SQL Manager
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема с SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]