Delphi TFDTable SqLite 问题

Delphi TFDTable SqLite problems

我将 sample.s3db SqLite 部署到我的 Delphi android 项目中。

  1. 将文件夹设置为:

    fdconnection1.params.Database := system.ioutils.TPath.Combine( system.ioutils.TPath.GetDocumentsPath, 'sample.s3db');

在 FDConnection1BeforeConnect 事件中。

  1. 在 Project-Deployment 中,将文件夹设置为 assets\internal\ for Android

然而,当我 运行 应用程序时,显然它可以找到物理文件,但它说找不到我的 tablename “客户”。

所以在 BeforeConnect 代码中,如果我添加 CREATE TABLE SQL 创建代码(如果不存在),那么一切正常,当然 table 是空(而我部署的 sample.s3db 不为空)...这证明文件 sample.s3db 已找到且未损坏,但不知何故未找到 Table。

甚至试图改变 BeforeConnect

  FDConnection1.Params.Values['OpenMode'] := 'ReadWrite';

但是还是不行。

有什么想法 table 这个名字不起作用吗?

我尝试将 table 名称更改为全部大写,以防 Android 区分大小写,但它也不起作用。

我建议从 android 中删除您的应用。这将清除您的数据。否则,如果文件已经存在,则不会部署新的 sqlite 文件。例如,如果您在某个时间点在路径中出错,则可能会发生这种情况,因此 sqlite 只是创建了一个空数据库。

您的连接字符串看起来是正确的,您的目标路径也是如此。为了安全起见,您可能还想清除连接的其他值。

fdConnection1.ConnectionDefName:= '';