【发布时间】:2016-09-06 20:24:43
【问题描述】:
以下代码在 POCO 中创建了一个名为“test”的表:
#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。
【问题讨论】:
标签: c++ sqlite poco-libraries