根本的なことがわからないと思うような問題があります。私は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;
}