Следующий код создает таблицу с именем «test» в POCO:
#include "Poco/Data/Session.h"
#include "Poco/Data/SQLite/Connector.h"
#include <string>
using namespace Poco::Data::Keywords;
using Poco::Data::Session;
int main(int argc, char** argv)
{
Poco::Data::SQLite::Connector::registerConnector();
Session session("SQLite", "test.db");
session << "CREATE TABLE test (id INTEGER)", now;
return 0;
}
Я хочу написать функцию, которая создает таблицы с именами в соответствии с заданными аргументами. я бы подумал использовать
int main(int argc, char** argv)
{
Poco::Data::SQLite::Connector::registerConnector();
Session session("SQLite", "test.db");
std::string name = "test";
session << "CREATE TABLE ? (id INTEGER)", bind(name), now;
return 0;
}
Использование подстановочного знака и замена его заданным именем. Насколько я понимаю, мне даже не нужно bind
(которое копирует данное значение), а use
должно быть достаточно, так как оператор заканчивается now
, но это неважно.
Независимо от того, какое ключевое слово я использую (use
, bind
, useRef
), программа выдает ошибку «Ошибка SQL или отсутствующая база данных».
Я также пытался создать Statement
и создать таблицу, но без изменений.
Я делаю что-то неправильно? Запрещена ли замена подстановочных знаков в этом вызове? Должен ли я изменить вызов вручную?
Если это имеет значение, как следует из моего #includes
, я использую SQLite.