我遇到了一个问题,这让我认为我不了解一些基本的东西。我正在使用 MySQL++,并且在调用 query.execute()(其中“query”是类 mysqlpp::Query 的实例)时它可以工作,但是当调用 query->execute()(其中“query”是指向实例的指针时)类 myqslpp::Query) 相同的查询失败!错误消息是“查询为空”。
这是我用于测试的代码。
以下运行没有错误,并且在数据库中创建了表。
void test1() {
mysqlpp::Connection conn;
conn.connect(0, "server", "user", "password");
conn.select_db("db_name");
mysqlpp::Query query = conn.query();
try {
query << "CREATE TABLE IF NOT EXISTS MY_TABLE (MY_COLUMN SMALLINT)";
query.execute();
}
catch (const mysqlpp::BadQuery&) {
std::cerr << query.error() << std::endl;
}
}
虽然以下产生输出“查询为空”并且未在数据库中创建表。
void test2() {
mysqlpp::Connection conn;
mysqlpp::Query *query = 0;
conn.connect(0, "server", "user", "password");
conn.select_db("db_name");
query = &conn.query();
try {
*query << "CREATE TABLE IF NOT EXISTS MY_TABLE (MY_COLUMN SMALLINT)";
query->execute();
}
catch (const mysqlpp::BadQuery&) {
std::cerr << query->error() << std::endl;
}
query = 0;
}