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

Вниз

Как устранить ошибку подключения к базе данных?   Найти похожие ветки 

 
Сергей   (2012-03-06 18:42) [0]

Использую dbExpress Через TSimpleDataSet подключаюсь к Oracle. Подключение осуществлялось. По непонятным пока причинам начала выдавать ошибку
DbExpressError: insufficient memory for operation.
Через SQLNovigator подключаюсь и работаю нормально.

Функция подключения

Function  TfrmMain.LoadTable(NameTable:String; RecShowCount:String; SqlStringFilter:String): boolean;
var
ADOConnection:TADOConnection;
ADOQuery:TADOQuery;
ConnectString: String;
SqlString:String;
RecordCount: Integer;
ListNameCol: TStrings;
ListIndex: Integer;
SqlStringCol,SqlStringData,NOMER,SqlStrRecShow,RowIndMax: String;
begin
 try
   //Screen.Cursor := crSQLWait;
   result:=false;
   ListNameCol:=TStringList.Create;
   //  загружаю поля основной таблицы
   SqlString:="SELECT * FROM " +NameTable + " ORDER BY NOMER DESC";
   sdsBase.Active := false;
   sdsBase.DataSet.Active := false;
   sdsBase.DataSet.CommandText := SqlString;
   sdsBase.DataSet.Active := true;  // ЗДЕСЬ ВЫДАЕТ ОШИБКУ
   sdsBase.Active := true;
   sdsBase.Fields.GetFieldNames(ListNameCol);
   // Готовлю фильтр отбора записей по коилеству
   sdsBase.First;
   RowIndMax:=sdsBase.FieldByName("NOMER").AsString;
   SqlStrRecShow:=SqlRecShow("NOMER", RowIndMax, RecShowCount);
   sdsBase.Active := false;
   sdsBase.DataSet.Active := false;
   SqlStringCol:= "";
   SqlStringData:="";
   // фомирую последовательность колонок для sgl запроса
   For ListIndex:=0 to  ListNameCol.Count-2 do
     begin
     SqlStringCol:= SqlStringCol+ " "+ ListNameCol.Strings[ListIndex]+ ",";
     end;
   SqlStringCol:=AnsiMidStr(SqlStringCol,1, Length(SqlStringCol)-1);
   // конечный запрос к базе данных
   SqlString:="SELECT" +SqlStringCol+" FROM " +NameTable+ " WHERE " + SqlStrRecShow+SqlStringFilter;
   sdsBase.Active := false;
   sdsBase.DataSet.Active := false;
   sdsBase.DataSet.CommandText := SqlString;
   sdsBase.DataSet.Active := true;
   sdsBase.Active := true;
   FillGridFromSQLOracle (stgrTask, sdsBase, GlobParam.gColWith);
   ListNameCol.Free;
   result:=true;
 except on E:Exception do
  begin
  ListNameCol.Free;
  end;
 end;

end;


 
sniknik ©   (2012-03-06 19:52) [1]

убрать все лишнее, не используемые переменные, дублирующиеся запросы, дублирующиеся операции... и главное идиотскую "обработку" ексепта.


 
Сергей   (2012-03-06 20:14) [2]

Что в ней не правильно?


 
Anatoly Podgoretsky ©   (2012-03-06 21:00) [3]

Утечка памяти


 
sniknik ©   (2012-03-06 21:01) [4]

да все.


 
Loginov Dmitry ©   (2012-03-06 23:32) [5]

За гарантированное освобождение занятых ресурсов отвечает оператор TRY...FINALLY. Можете о нем почитать:
http://www.loginovprojects.ru/index.php?page=tryfinally

TRY...EXCEPT выполняет другие задачи: позволяет перехватить исключение (ошибку), организовать действия по его обработке. Если не знаете, то лучше TRY...EXCEPT не используйте.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.071 c
15-1332253470
leklerk
2012-03-20 18:24
2013.03.22
Как прикрутить хелпник от одной версии к другой?


15-1349424452
Roman_man
2012-10-05 12:07
2013.03.22
Что-то с отрображением файлов.


6-1264678262
madacar
2010-01-28 14:31
2013.03.22
Поиск письма на сервере


15-1351367113
заводчанин
2012-10-27 23:45
2013.03.22
CNC Mazatrol


2-1331031997
Scott Storch
2012-03-06 15:06
2013.03.22
приводить к типу DWORD





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