Могу ли я использовать параметры для имени таблицы в sqlite3?

У меня странное чувство в отношении параметров 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, чтобы включить имя таблицы перед подготовкой запроса?

15
задан Gui13 3 May 2011 в 13:35
поделиться