-2

MySQL C ++コネクタのMySQLサイトの構文に従いますが、良い結果は得られません。スニペットは次のとおりです。

#include "/usr/include/mysql++/mysql++.h"
#include "/usr/include/mysql/mysql.h"
#include "/usr/include/mysql/mysql_version.h"
#include "/usr/include/mysql_connection.h"
#include "/usr/include/mysql_driver.h"
#include <cppconn/driver.h>
#include <cppconn/connection.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>


using namespace std;
using namespace sql::mysql;
using namespace sql;


sql::mysql::MySQL_Driver *driver;
driver = sql::mysql::get_mysql_driver_instance();
sql::Connection *con;
con = driver->connect("tcp://127.0.0.1:3306", "db", "password");
sql::PreparedStatement  *prep_stmt;
prep_stmt = con->prepareStatement("INSERT INTO db(srcIP, srcCountry, destIP, destHost, destPort, blIP) VALUES (?, ?, ?, ?, ?, ?)");

    prep_stmt->setString(1, src_ip);
    prep_stmt->setString(2, country_code);
    prep_stmt->setString(3, dest_ip);
    prep_stmt->setString(4, host_name);
    prep_stmt->setString(5, dest_prt);
    prep_stmt->setString(6, blip);
    prep_stmt->execute();

    delete prep_stmt;
    delete con;

            }
        else

sql::mysql::MySQL_Driver *driver;
driver = sql::mysql::get_mysql_driver_instance();
sql::Connection *con;
    con = driver->connect("tcp://127.0.0.1:3306", "db", "password");
sql::PreparedStatement *prep_stmt;
    prep_stmt = con->prepareStatement("INSERT INTO db(srcIP, srcCountry, destIP, destHost, destPort, blIP) VALUES (?, ?, ?, ?, ?, ?)");

    prep_stmt->setString(1, src_ip);
    prep_stmt->setString(2, country_code);
    prep_stmt->setString(3, dest_ip);
        prep_stmt->setString(4, he->h_name);
    prep_stmt->setString(5, dest_prt);
    prep_stmt->setString(6, blip);
    prep_stmt->execute();

    delete prep_stmt;
    delete con;

コンパイル:

g ++ sql.c -o sql -I / usr / include -I / usr / include / mysql -I / usr / include / mysql ++ -I / usr / local / include -I / usr / local / include / cppconn -lmysqlcppconn- lmysql ++ -lstdc ++ -lmysqlpp -lmysqlclient

そして、MySQLドライバーの2番目のセットで常にエラーが発生します。

エラー:「ドライバー」はこのスコープで宣言されていません

4

1 に答える 1

1

私が見ることができるものだけに基づいて、あなたがelseケースの一部になりたいステートメントの周りに中括弧が欠けているように見えます。これを行う場合:

if (x)
{
   // do something
}
else
   Foo* foo = new foo();
   foo->someFunction();

foo->someFunction();elseには中括弧なしのステートメントが1つしか含まれておらず、その後fooがスコープ外になるため、次の行でエラーが発生します。これを行う必要があります:

if (x)
{
   // do something
}
else
{
   Foo* foo = new foo();
   foo->someFunction();
}
于 2012-10-05T19:02:12.940 に答える