【问题标题】:Delphi XE5 Android Dev "unable to open database file"Delphi XE5 Android Dev“无法打开数据库文件”
【发布时间】:2014-02-08 17:29:35
【问题描述】:

我一步一步按照本教程进行操作Mobile Tutorial: Using SQLite (iOS and Android),但是当我在我的 android 设备上部署我的应用程序并尝试添加一个条目时,我收到以下错误 “无法打开数据库文件”

这是我的代码的 sn-p:

procedure TForm1.rappadAfterConnect(Sender: TObject);
begin
      rappad.ExecuteDirect('CREATE TABLE IF NOT EXISTS notes(ID INTEGER PRIMARY KEY, title TEXT NOT NULL, content TEXT NOT NULL);');
end;

procedure TForm1.rappadBeforeDisconnect(Sender: TObject);
begin
  {$IF DEFINED(iOS) or DEFINED(ANDROID)}
  rappad.Params.Values['ColumnMetadataSupported'] := 'False';
  rappad.Params.Values['Database'] :=
      TPath.Combine(TPath.GetDocumentsPath, 'rappad.s3db');
  {$ENDIF}
end;

有谁知道为什么会发生这种情况?谢谢!

【问题讨论】:

    标签: android sqlite delphi delphi-xe5


    【解决方案1】:

    rappadBeforeDisconnect 中的代码需要在 BeforeConnect 中。在您断开连接之前告诉连接数据库的位置是没有意义的。

    procedure TForm1.rappadBeforeConnect(Sender: TObject);
    begin
      {$IF DEFINED(iOS) or DEFINED(ANDROID)}
      rappad.Params.Values['ColumnMetadataSupported'] := 'False';
      rappad.Params.Values['Database'] :=
          TPath.Combine(TPath.GetDocumentsPath, 'rappad.s3db');
      {$ENDIF}
    end;
    

    【讨论】:

    • 谢谢!我只是注意到,然后实际上!这是因为,在对象检查器中,我不小心单击了 BeforeDisconnect 过程而不是 BeforeConnect。杜尔!愚蠢的我……在那次事故中被困和困惑了好久。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多