【问题标题】:Delphi FireDAC error working with parameters SQLite使用参数 SQLite 的 Delphi FireDAC 错误
【发布时间】:2022-01-20 11:41:22
【问题描述】:

早上好。

我遇到了一个我无法解决的问题。情况如下: 我有一个过程,我称之为传递一个字符串,这基本上是一个表的名称。 在这种特殊情况下,它是“sys”。

这个过程基本上执行了以下几行:

Query.Close ();
Query.ParamByName ('TABLE'). AsString: = Table;
Query.Open;

“查询”基本上是这样的:

SELECT * FROM: TABLE;

因此您应该运行以下命令:

SELECT * FROM sys;

真相?

好吧,显然我遇到了错误。因为在测试它并执行我的程序时会发生这种情况:

[FireDAC] [Phys] [SQLite] ERROR: near ": TABLE:" syntax error.

** SQLite 对参数的工作方式是否不同? ** 我找不到失败的原因。

【问题讨论】:

  • 参数只能用于值,不能用于任何标识符或 SQL 关键字。这适用于所有 SQL 方言。 : 也需要位于参数名称的开头。所以SELECT * FROM PEOPLE WHERE FIRSTNAME = :FNAME有一个参数叫FNAME
  • Firedac 确实有可以用于任何事情的宏。在将它们发送到数据库之前,对它们进行评估并更新 SQL。

标签: sqlite delphi firedac


【解决方案1】:

SQLite 文档的基础和此链接您不能将表名作为参数传递:
[https://stackoverflow.com/questions/5870284/can-i-use-parameters-for-the-table-name-in-sqlite3][1]

您可以通过这种方式(技巧)进行查询字符串:

Query.sql[1]:='tablename'

默认查询字符串是这样的:

select * form
//X (line 1 )
where ....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多