我们决定将sql参数化查询文本存储在xml文件中。对于这个项目,我们使用SQLite和C#代码(http://system.data.sqlite.org/),但是错过了一些关于参数化查询的灵活性的基本信息参考,特别是在标准SQL中,以及这个数据库引擎。无可置疑的变量是可参数化的(其中A = ...的值),表名不是,但我们不完全确定列名(从mytable中选择xxx)。 谢谢你帮助我找到。
答案 0 :(得分:0)
在几乎所有的SQL引擎中,SQLite也不例外,无法对表名和列名进行参数化。
这是因为大多数时候参数化查询都是预编译的,为了使预编译能够工作,SQL引擎需要创建查询计划 - 使用哪些列连接哪些表以及使用哪些索引。如果在此阶段未知表和列名称,则无法进行预编译。这就是为什么只允许参数化约束的值(如在WHERE中)(使用?
,$1
或:name
语法,具体取决于SQL引擎支持)。