gpt4 book ai didi

database - 如何在 FireDAC 的 TFDPhysSQLiteDriverLink 组件中指定 SQLite 数据库文件?

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:12 25 4
gpt4 key购买 nike

我正在尝试修改 one of the FireDAC sample projects为了使用现有的 SQLite 文件作为数据库源。该示例未经修改即可正常工作并连接到其数据库。但是,我无法弄清楚它连接到的数据库是在哪里指定的,以便更改它。

According to the documentationTFDPhysSQLiteDriverLink 组件上应该有一个 Database 属性。无:不存在。我什至将表单转换为文本并查看了所有组件的自定义属性,但没有任何地方定义路径。代码中也没有 - 示例非常小,根本没有定义路径。

文档中的另一个选项是包含 FireDAC.Phys.SQLite 单元,尽管这并没有解释如何设置数据库,因为据我所知该单元只包含组件。当我搜索数据库属性(见附图)时,该单元中任何类中的属性似乎都不是我所追求的。最接近的是一个用于备份组件的字符串——我怀疑这就是我所需要的。 TFDPhysSQLiteConnection 类中有一个 SQLiteDatabase 属性,但它是只读的。

List of all Database properties defined in the FireDAC.Phys.SQLite  unit

List of all Database properties defined in the FireDAC.Phys.SQLite unit

我也试过creating a temporary connection definition at runtime ,通过双击 TFDConnection 组件。这只会给出一个异常(exception):

Exception double-clicking the TFDConnection component

Exception double-clicking the TFDConnection component

我找到的唯一解决方案是在 XE5 文档中,它说 to set the $(PUBLICDOCUMENTSDIR) environment variable .我已经必须这样做才能让演示运行(以前,它在 FDConnection1.Connected := True; 行抛出相同的异常;现在不会,演示在运行时完美运行... p>

所以我很难过。它在哪里设置数据库?它不在 DFM 或任何流媒体属性中;它不在文档定义的属性中(TFDPhysSQLiteDriverLink.Database 不存在,也没有任何看起来像它的东西);它不在 TFDConnection 设计时编辑器中(我认为,即使它抛出异常,此处指定为属性的文件也会出现在流式 DFM 中);它不在代码中; ...它还能在哪里?

(我之前从未使用过 FireDAC,所以我是一个完全的菜鸟,顺便说一句。我通过文档和示例进行自学。)

最佳答案

对于极简主义的 FireDAC 项目,您实际上不需要 TFDPhysSQLiteDriverLink,如果您是第一次尝试连接到数据库,那么使用一个 TFDPhysSQLiteDriverLink 会使问题变得困惑。

试试这个:

  • 记下名称,包括 Sqlite 数据库的路径。

  • 启动一个新的 VCL 项目并将 TFDconnection、TFDQuery、TDataSource 和 TDBGrid 拖放到其窗体上并将它们连接起来。将 TDFQuery 的 Sql 设置为从您知道数据库中存在的某个表中选择 *。

  • 右键单击 TFDConnection 并从弹出窗口中选择Connection editor

  • DriverID 设置为 SQLite 并将您的数据库名称插入到 Database Value 框中。

  • 打开 FDQuery。

如果您编译并运行该项目,您将收到一个异常,告诉您缺少 TFDGUIxWaitCursor 的类工厂(这是我喜欢 FireDAC 的那种东西),但是通过将一个放到您的表单上可以轻松解决这个问题.请注意,您不必使用 Object Inspector 将它连接到任何其他 FD 组件。

之后,您可以添加一个 TFDPhysSQLiteDriverLink 并将其 DriverID 设置为与 TFDConnection 相同。

关于database - 如何在 FireDAC 的 TFDPhysSQLiteDriverLink 组件中指定 SQLite 数据库文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32682226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com