TFDQuery导致App失败,无法在iOS模拟器Delphi 10.3 Upd 3 Firemonkey上运行

问题描述

我在运行有2个TFDConnections和相同sqlite驱动程序的iOS平台上运行TFDQuery时遇到问题。该应用程序已安装并尝试打开,但立即关闭,没有任何错误消息。当在设计时或运行时将TFDQuery设置为active = true时,就会出现错误。@H_502_1@

我拥有2个TFDConnections的原因之一是我需要RestAPI Localsql,另一个是我的嵌入式数据库sqlite3)。@H_502_1@

我没有在Windows目标平台上遇到此问题。我尚未尝试使用Android。@H_502_1@

这是此案的我的MRE。请注意,由于该错误仅限于TFDConnections和TFDQuery,因此在此示例中未包含RestAPI Localsql。@H_502_1@

FMX程序: @H_502_1@

unit main_u;

interface

uses
  System.SysUtils,System.Types,System.UITypes,System.Classes,System.Variants,FMX.Types,FMX.Controls,FMX.Forms,FMX.Graphics,FMX.Dialogs,FireDAC.Stan.Intf,FireDAC.Stan.Option,FireDAC.Stan.Error,FireDAC.UI.Intf,FireDAC.Phys.Intf,FireDAC.Stan.Def,FireDAC.Stan.Pool,FireDAC.Stan.Async,FireDAC.Phys,FireDAC.Phys.sqlite,FireDAC.Phys.sqliteDef,FireDAC.Stan.ExprFuncs,FireDAC.FMXUI.Wait,Data.DB,FireDAC.Comp.Client,System.IoUtils,FireDAC.Stan.Param,FireDAC.DatS,FireDAC.DApt.Intf,FireDAC.DApt,FireDAC.Comp.UI,FireDAC.Comp.DataSet;

type
  TForm9 = class(TForm)
    con2: TFDConnection;
    qry1: TFDQuery;
    cur1: TFDGUIxWaitCursor;
    dvr1: TFDPhyssqliteDriverLink;
    con1: TFDConnection;
    procedure con2BeforeConnect(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form9: TForm9;

implementation

{$R *.fmx}

procedure TForm9.con2BeforeConnect(Sender: TObject);
begin
  {$IF DEFINED(iOS) or DEFINED(ANDROID)}
    con2.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath,'smartcart.s3db');
  {$ELSE}
    con2.Params.Values['Database'] := 'D:\My Project Files\5. my_projects_aws-rest\project_x_v0\application\client\database\smartcart.s3db';
  {$ENDIF}
end;

end.

FMX文件:@H_502_1@

object Form9: TForm9
  Left = 0
  Top = 0
  Caption = 'Form9'
  ClientHeight = 480
  ClientWidth = 289
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  object con2: TFDConnection
    Params.Strings = (
      
        'Database=D:\My Project Files\5. my_projects_aws-rest\project_x_v' +
        '0\application\client\database\smartcart.sdb3'
      'LockingMode=normal'
      'DriverID=sqlite')
    Connected = True
    LoginPrompt = False
    BeforeConnect = con2BeforeConnect
    Left = 128
    Top = 168
  end
  object qry1: TFDQuery
    Active = True
    Connection = con2
    sql.Strings = (
      'SELECT * FROM lists')
    Left = 128
    Top = 232
  end
  object cur1: TFDGUIxWaitCursor
    Provider = 'FMX'
    Left = 80
    Top = 32
  end
  object dvr1: TFDPhyssqliteDriverLink
    Left = 24
    Top = 32
  end
  object con1: TFDConnection
    Params.Strings = (
      'DriverID=sqlite')
    Connected = True
    LoginPrompt = False
    Left = 128
    Top = 112
  end
end

我已经进行了一些研究,但找不到与我的案子有关的任何解决方案。我可以说,TFDQuery对于在iOS平台上同时运行相同驱动程序的2个TFDConnections有一些错误或问题。@H_502_1@

否则,我可能在这里错过了一些事情。@H_502_1@

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)