源码

c – 我可以在sqlite3中使用表名参数吗?


我有一些奇怪的感觉abour sqlite3参数,我想透露给你.

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

#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语句以包含表名?

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/c-wokeyizaisqlite3zhongshiyongbiaomingcanshuma.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9月 26, 2019 at 11:00 上午

热评文章