gpt4 book ai didi

c++ - 我可以在 sqlite3 中为表名使用参数吗?

转载 作者:IT老高 更新时间:2023-10-28 22:38:32 26 4
gpt4 key购买 nike

我对 sqlite3 parameters 有一些奇怪的感觉,我想向你公开。

这是我的查询和失败消息:

#query
'SELECT id FROM ? WHERE key = ? AND (userid = '0' OR userid = ?) ORDER BY userid DESC LIMIT 1;'
#error message, fails when calling sqlite3_prepare()
error: 'near "?": syntax error'

在我的代码中是这样的:

// Query is a helper class, at creation it does an sqlite3_preprare()
Query q("SELECT id FROM ? WHERE key = ? AND (userid = 0 OR userid = ?) ORDER BY userid DESC LIMIT 1;");
// bind arguments
q.bindString(1, _db_name.c_str() ); // class member, the table name
q.bindString(2, key.c_str()); // function argument (std::string)
q.bindInt (3, currentID); // function argument (int)
q.execute();

感觉表名不能使用sqlite参数,但是在Sqlite3 C API中找不到确认.

你知道我的查询出了什么问题吗?
我是否必须在准备查询之前预处理我的 SQL 语句以包含表名?

最佳答案

Ooookay,应该更彻底地了解 SO。

答案:
- SQLite Parameters - Not allowing tablename as parameter
- Variable table name in sqlite

它们适用于 Python,但我想 C++ 也是如此。

tl;dr:

您不能将表名作为参数传递。
如果有人在我确认的 SQLite 文档中有链接,我很乐意接受答案。

关于c++ - 我可以在 sqlite3 中为表名使用参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5870284/

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