Главная страница
    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.086 c
15-1336042075
john mc'coffe
2012-05-03 14:47
2013.03.22
java tcp client


15-1342196659
Студент_1234
2012-07-13 20:24
2013.03.22
Очищать ли список?


15-1352383958
Artem
2012-11-08 18:12
2013.03.22
XP на VirtualBox e запускается со второго раза


15-1350918593
Artem
2012-10-22 19:09
2013.03.22
Как защититься? Не очень разбираюсь.


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