Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 40 41 42 43 44 45 [46] 47 48 49   вперед  Ctrl
 Re: FireDAC  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2349
Dmitry Arefiev
white_nigger,

я ответил еще 2 ноября.
Не получал ( Можешь продублировать на lcm.forums собачка gmail.com
8 ноя 19, 16:43    [22012484]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Mironico
Member

Откуда: Оттуда
Сообщений: 206
PostgreSQL базу умеет бекапить?
13 ноя 19, 16:52    [22015605]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 4008
Дмитрий, не сталкивались с проблемой утечки хендлов при подключении к Oracle из потока?
Воспроизводится простейшим кодом, проверял на XE7 и 10.3, счетчик Handles в диспетчере задач каждый раз увеличивается на 9.

type

  TTestThread = class(TThread)
  protected
    Comment: string;
    procedure Execute; override;
  end;


procedure TTestThread.Execute;
var DB: TFDConnection;
    Connection: string;
begin
   try
     Connection := 'DBName@user;password';
     DB := nil;
     try
       DB := TFDConnection.Create(nil);
       DB.Params.Pooled := false;
       DB.DriverName := 'Ora';
       DB.Params.Database := Copy(Connection, 1, Pos('@', Connection) - 1);
       Delete(Connection, 1, Pos('@', Connection));
       DB.Params.UserName := copy(Connection, 1, pos(';', Connection)-1);
       Delete(Connection, 1, Pos(';', Connection));
       DB.Params.Password := trim(Connection);
       DB.Params.Values['CharacterSet'] := 'UTF8';
       DB.Connected := True;
     finally
       DB.Free;
     end;
   except on E: Exception do
     Comment := E.Message
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TT := TTestThread.Create(true);
  TT.OnTerminate := OnTerminate;
  TT.FreeonTerminate := true;
  TT.Resume;
end;

procedure TForm1.OnTerminate(Sender: TObject);
begin
  Caption := TTestThread(Sender).Comment;
end;


FDManager на форме есть.
6 фев 20, 18:55    [22075076]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9867
Нет. Баги могут быть и в Оракл клиенте
7 фев 20, 10:28    [22075350]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 4008
Dmitry Arefiev,

Но при этом если создавать из основного потока, то все ОК. Клиенту, по идее, должно быть все равно.
7 фев 20, 11:36    [22075449]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 4008
Dmitry Arefiev,

Проверил на UniDAC - точно такой же код работает нормально. Число хендлов возрастает на 8 и тут же откатывается назад, так что дело не в клиенте.
7 фев 20, 18:16    [22075743]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Volk65
Member

Откуда:
Сообщений: 51
Прошу прощения за ламерский вопрос.
Как перечитать текущую запись (refresh current record) в FDStoredProc?
8 фев 20, 20:40    [22076133]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
L_argo
Member

Откуда:
Сообщений: 1209
Volk65
Прошу прощения за ламерский вопрос.
Как перечитать текущую запись (refresh current record) в FDStoredProc?
Кратко: Подключить к ней FDUpdateSQL с запросом и указанием
ключевого поля:

select ID, .....
from ....
where ..... and ID = :OLD_ID
12 фев 20, 14:48    [22078402]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Volk65
Member

Откуда:
Сообщений: 51
L_argo
Volk65
Прошу прощения за ламерский вопрос.
Как перечитать текущую запись (refresh current record) в FDStoredProc?
Кратко: Подключить к ней FDUpdateSQL с запросом и указанием
ключевого поля:

select ID, .....
from ....
where ..... and ID = :OLD_ID


Я пробовал: exec my_stored_proc :OLD_ID так не работает. Select не всегда можно реализовать, т.к. а) процедура может содержать сложную логику получения данных, б) при изменении основного запроса также надо переписывать и запрос в FDUpdateSQL.

И FDUpdateSQL нужен (могу ошибаться) когда я изменяю данные на стороне клиента. А у меня не происходит изменения (редактирования) данных на клиенте. Клиент отправляет через Exec proc... на сервер данные, сервер вносит какие-то изменения, затем надо перечитать на клиенте эту строку.
12 фев 20, 18:40    [22078695]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
L_argo
Member

Откуда:
Сообщений: 1209
Я пробовал: exec my_stored_proc :OLD_ID так не работает.
Я тоже. И с тем же успехом :(
К сожалению эта важная проблема не решается. Дело даже не в сложной логике. Безопасность важна тоже: прямые запросы - не хорошо.
А жаль.
14 фев 20, 14:28    [22080042]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
SergSni
Member

Откуда:
Сообщений: 2
Вопросы по работе с Oracle LOB

Есть grid посоединенный к FDQuery. Хочется иметь простую вещь - чтобы LOB не фетчился в память (это сильно замедляет запрос и раздувает использование памяти).
За это, видимо, отвечает свойство FetchOptions.items.fiBlobs. Но если его отключить, то в поле всегда пишется (WideMemo) безотносительно того, пустое поле или нет. Есть ли возможность все-таки выводить (WideMemo) /(WIDEMEMO) ?
В DOA это, кстати, делалось без проблем.

И теперь о самой надписи типа (WideMemo) ...
Можно ли как-то уйти от этой абстракции и выводить реальный тип данных Oracle (Blob Clob Long и т.п.)

Я, разумеется, пытался все это гуглить, но никаких разумных ответов не нашел


PS Delphi 10.2
16 фев 20, 10:58    [22080664]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3531
SergSni
теперь о самой надписи типа (WideMemo) ...
Можно ли как-то уйти от этой абстракции и выводить реальный тип данных Oracle (Blob Clob Long и т.п.)
можно конечно, я когда-то заряжал qc#86106 на тему этого бага, но сомневаюсь что поправили даже в современных версиях. если не охота повсеместно OnGetText выставлять то можно свои базовые TMemoField (и прочие лоб-типы) сделать и там прям на уровне GetText возвращать что угодно
SergSni
Я, разумеется, пытался все это гуглить, но никаких разумных ответов не нашел
я даже на этом ресурсе об этом помнится писал, как и например у девэксов (b148632/B190664) и самой эмбракодельни
17 фев 20, 10:40    [22081059]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
kenesg12
Member

Откуда: Казахстан
Сообщений: 24
Приветствую всех. Подскажите пожалуйста в чем может быть проблема? Никак не могу подключить коннект в режиме пуллед, все время вылетает с такой ошибкой.
Делаю так:
 oParams := TStringList.Create;
 oParams.Add('Database='+DBNAME);
 oParams.Add('User_Name=SYSDBA');
 oParams.Add('Password=masterkey');
 oParams.Add('CharacterSet=UTF8');
 oParams.Add('Pooled=True');
 FDManager.AddConnectionDef('FBConnect', 'FB', oParams);
 try
  FDManager.Active:=true;
  FDB.ConnectionDefName:='FBConnect';
  FDB.Connected:=true;
 finally
  FreeAndNil(oParams);
 end;


Вылетает с такой ошибкой:
[FireDAC][Comp][Clnt]-507. Connection [FDConnection1: TFDConnection] cannot be pooled. Possible reason: connection definition is the FDManager.ConnectionDefs list or TFDConnection.Params has additional parameters.
29 фев 20, 07:44    [22089642]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9867
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Multithreading_(FireDAC)#Connection_Pooling
29 фев 20, 10:47    [22089665]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Maniacosaur
Member

Откуда:
Сообщений: 27
При миграции на FireDAC возникла проблема. Суть в следующем. Есть две таблицы в БД (Firebird 3). Когда в TFDQuery (да и в TFDTable) добавляю все поля в одном случае поле типа VARCHAR(1) добавляется как TStringField и при этом Size почему-то 4, а в другом как TWideStringField и Size = 1. У обоих полей одинаковое значение Charset и Collate. Почему такое разное поведение?
3 мар 20, 15:08    [22091692]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
svnvlad
Member

Откуда:
Сообщений: 2170
Извиняюсь, наверно уже было, но листать 46 страниц в поиске ответа времени нет.
Установил Delphi 10.3 Rio Community Edition. До этого все проекты написаны в Delphi 2010 со стареньким AnyDAC v 2.0.15.1163.
Как сделать так, чтобы клиент-серверные приложения продолжали работать в новой среде?
Самый правильный вариант, я так понял, купить ENTERPRISE (даже не Professional) версию Delphi за 250 000 рублей, в которую уже входит FireDAC.
Потому что если даже купить отдельно FireDAC за 399 долларов, то это не поможет вплоть до энтерпрайз версии дельфи.
Можно ли обойтись каким-то другим DAC-ом, установив его с комьюнити едишн, чтобы работать с клиент-серверными программами?
3 мар 20, 18:43    [22091923]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1316
svnvlad,

Для начала проверь на своих проектах, как работает FireDAC, входящий в комплект CE.
3 мар 20, 21:28    [22091990]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
svnvlad
Member

Откуда:
Сообщений: 2170
Vlad F
svnvlad,

Для начала проверь на своих проектах, как работает FireDAC, входящий в комплект CE.

Не знал, что он входит в CE.
4 мар 20, 11:11    [22092293]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
KinsT_UA
Member

Откуда: Киев
Сообщений: 82
Добрый день!
Vlad F
Для начала проверь на своих проектах, как работает FireDAC, входящий в комплект CE.
Мой вопрос как раз об этом :)

Раньше с FireDAC не работал, использовал Zeos.
Собрал тестовый проект с использованием FireDAC, который входит в поставку IDE.

Код инициализации полключения:
procedure TMainForm.InitConnect(Host, DB, User, Pass: string);
var vSL : TStringList;
begin
  vSL := TStringList.Create;
  vSL.Add('Server='+Host);
  vSL.Add('Database='+DB);
  vSL.Add('Port=5432');
  vSL.Add('CharacterSet=UTF8');
  vSL.Add('User_Name='+User);
  vSL.Add('Password='+Pass);

  FDManager.AddConnectionDef('ConnectToPG', 'PG', vSL);

  try
    FDManager.Active := true;
    ConnectionFD.ConnectionDefName := 'ConnectToPG';
    ConnectionFD.Connected := True;
  finally
    FreeAndNil(vSL);
  end;
end;
После попытки подключиться к БД получаю ошибку:
[FireDAC][Phys][PG]-315. Cannot get vendor library entry point[s]. [PQencryptPassword].
Ошибка воспроизводится даже при ручном заполнении параметров подключения в DesignTime.

В русскоязычной документации к Postgres пишут, что PQencryptPassword это устаревшая процедура, которую не нужно использовать.

libpq.dll версии 9.3.2
Embarcadero ® Delphi 10.3 Version 26.0.32429.4364 (Последние обновления не ставил).

Повторюсь, контролы не переустанавливал.
То что было в поставке IDE, то и использую.

Что это за ошибка? Где почитать описание? Какие существуют варианты её побороть?

Сообщение было отредактировано: 4 мар 20, 11:51
4 мар 20, 11:50    [22092348]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9867
Использовать libpq.dll например v 9.5 или другой версии, где PQencryptPassword экспортируется
4 мар 20, 12:18    [22092384]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
svnvlad
Member

Откуда:
Сообщений: 2170
Vlad F
svnvlad,

Для начала проверь на своих проектах, как работает FireDAC, входящий в комплект CE.

Правда что, работает с удаленными базами. (насколько это надежно? не закроют ли эту возможность? И нет ли ограничений на кол-во подключений к базе и т.д.?) А на сайте Embarcadero в таблице возможностей для CE пусто, что касается FireDAC.
4 мар 20, 14:16    [22092603]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 586
svnvlad,
в этой редакции только с локальными бд
4 мар 20, 14:44    [22092628]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
svnvlad
Member

Откуда:
Сообщений: 2170
cptngrb
svnvlad,
в этой редакции только с локальными бд

Ну не знаю, у меня к удаленной приконнектилось и считало таблицу.
4 мар 20, 15:03    [22092651]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1316
svnvlad
Vlad F
svnvlad,

Для начала проверь на своих проектах, как работает FireDAC, входящий в комплект CE.

Правда что, работает с удаленными базами. (насколько это надежно? не закроют ли эту возможность? И нет ли ограничений на кол-во подключений к базе и т.д.?) А на сайте Embarcadero в таблице возможностей для CE пусто, что касается FireDAC.

Ты ничего не понял, - все это как раз тебе поручается проверить и доложить.
4 мар 20, 21:05    [22092968]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
svnvlad
Member

Откуда:
Сообщений: 2170
Vlad F
svnvlad
пропущено...

Правда что, работает с удаленными базами. (насколько это надежно? не закроют ли эту возможность? И нет ли ограничений на кол-во подключений к базе и т.д.?) А на сайте Embarcadero в таблице возможностей для CE пусто, что касается FireDAC.

Ты ничего не понял, - все это как раз тебе поручается проверить и доложить.

Ну вот, первый пункт уже проверил.
5 мар 20, 03:27    [22093058]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 40 41 42 43 44 45 [46] 47 48 49   вперед  Ctrl
Все форумы / Delphi Ответить