Главная страница
    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.46 MB
Время: 0.082 c
15-1338451685
TUser
2012-05-31 12:08
2013.03.22
Дошкольное программирование


15-1347628130
Л.Е
2012-09-14 17:08
2013.03.22
Хинты. Обрезается строка, столкнувшись с символом |


15-1341824763
Дмитрий С
2012-07-09 13:06
2013.03.22
Teamviewer может отвечать на запросы UAC...


15-1344957186
Рекрут
2012-08-14 19:13
2013.03.22
Безопасность Веб-Мани


2-1329332051
Zheksonz
2012-02-15 22:54
2013.03.22
Быстрое сохранение параметров в файл





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