Как предупреждение, не будьте слишком умны с этим.Не то чтобы я сильно страдал за подобные попытки.:))
Sqlite имеет встроенные построители запросов, сначала проверьте их.То, что они не позволят вам сделать, это указать имя таблицы, что, вероятно, является вашей проблемой.
boost :: format - хороший вариант для этого.Он безопасен для типов и с меньшей вероятностью может вызвать сегрегацию на вас, как переменные аргументы C.
std::string statement = boost::str(
boost::format("SELECT tab.* FROM %1% as tab")
% "my_table_name"
);
РЕДАКТИРОВАТЬ:
Sqlite обрабатывает привязку параметров самостоятельно, для этого вам не понадобятся переменные аргументы.
Функции sqlite3_bind_ * предоставляют доступ.
Вы можете использовать что-то вроде этого:
const char *sql = "INSERT INTO tab (a,b) VALUES (?1,?2);";
// create statement
sqlite3_bind_int(stmt, 1, 43);
sqlite3_bind_int(stmt, 2, 40000);
Эти функции связывания имеют возвращаемые значения, которые вынадо проверить, я оставлю это тебе.