我使用mysql数据库和Connector.C++ 1.1来进行数据读取,我的数据库如下现在我想要把这个数据中的string类型的那一列取出来,我用了下列代码
#include <iostream>
#include <map>
#include <string>
#include <memory>
#include "mysql_driver.h"
#include "mysql_connection.h"
#include "cppconn/driver.h"
#include "cppconn/statement.h"
#include "cppconn/prepared_statement.h"
#include "cppconn/metadata.h"
#include "cppconn/exception.h"using namespace std;
using namespace sql;int main()
{
sql::mysql::MySQL_Driver *driver = 0;
sql::Connection *conn = 0; try
{
driver = sql::mysql::get_mysql_driver_instance();
conn = driver->connect("tcp://localhost:3306/jwsystem", "root", "123456");
cout << "success" << endl;
}
catch (...)
{
cout << "fail" << endl;
}
sql::Statement* stat = conn->createStatement();
stat->execute("set names 'gb2312'");
ResultSet *res;
res = stat->executeQuery("SELECT * FROM sss");
while (res->next())
{
cout << "ss\t" << res->getInt("ss") << endl;
cout << "s\t" << res->getString("s") << endl;
} if (conn != 0)
{
delete conn;
}
system("pause");
}虽然能够取出Int类型的数据,但是在取String类型的数据的时候出现了下列错误我用try catch语句,发现它的错误是bad allocation,所以我想问问大神到底该如何从mysql数据库中取出string类型的数据,谢谢!

解决方案 »

  1.   

    代码没有问题。 下面是标准代码。用 getString 就行了。应该不是MYSQL方面的问题,建议在C版咨询一下。sql::Connection *con;
    sql::Statement *stmt
    sql::ResultSet  *res;
    // ...
    stmt = con->createStatement();
    // ...res = stmt->executeQuery("SELECT id, label FROM test ORDER BY id ASC");
    while (res->next()) {
      // You can use either numeric offsets...
      cout << "id = " <&;t; res->getInt(0);
      // ... or column names for accessing results. »
        The latter is recommended.
      cout << ", label = '" << »
        res->getString("label") << "'" << endl;
    }delete res;
    delete stmt;
    delete con;