Главная страница
    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.076 c
15-1341674225
Tommy
2012-07-07 19:17
2013.03.22
Кто сможет опознать место по фото?


2-1338391814
Serge Petrov
2012-05-30 19:30
2013.03.22
TWebBrowser и обновление элемента веб-страницы


15-1328942551
AV
2012-02-11 10:42
2013.03.22
Нужен ли XP mode, если на семерку хочу виртуалку поставить?


2-1343328927
Alez
2012-07-26 22:55
2013.03.22
Microsoft OneNote


9-1193300178
SergGG
2007-10-25 12:16
2013.03.22
Перевод координат в OpenGL





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