Delphi TFDTable SqLite 问题
Delphi TFDTable SqLite problems
我将 sample.s3db
SqLite 部署到我的 Delphi android 项目中。
将文件夹设置为:
fdconnection1.params.Database := system.ioutils.TPath.Combine( system.ioutils.TPath.GetDocumentsPath, 'sample.s3db');
在 FDConnection1BeforeConnect 事件中。
- 在 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:= '';
我将 sample.s3db
SqLite 部署到我的 Delphi android 项目中。
将文件夹设置为:
fdconnection1.params.Database := system.ioutils.TPath.Combine( system.ioutils.TPath.GetDocumentsPath, 'sample.s3db');
在 FDConnection1BeforeConnect 事件中。
- 在 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:= '';