studio para instalar guia descargar datos crear consultas comandos c++ c sqlite parameters sqlite3

c++ - para - instalar sqlite



¿Puedo usar parámetros para el nombre de la tabla en sqlite3? (2)

Tengo una sensación extraña sobre los parámetros de sqlite3 que me gustaría exponerte.

Esta es mi consulta y el mensaje de error:

#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''

En mi código, parece que:

// 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();

Tengo la sensación de que no puedo usar los parámetros de sqlite para el nombre de la tabla, pero no puedo encontrar la confirmación en la API C de Sqlite3 .

¿Sabes lo que está mal con mi consulta?
¿Debo preprocesar mi instrucción SQL para incluir el nombre de la tabla antes de preparar la consulta?


Sé que esto ya es muy viejo, pero como su consulta es solo una cadena, siempre puede agregar el nombre de la tabla como este en C ++:

std::string queryString = "SELECT id FROM " + std::string(_db_name);

o en el objetivo C:

[@"SELECT id FROM " stringByAppendingString:_db_name];