0

我正在尝试使用 8.0.13 MySQL C++ 连接器从数据库中读取数据。我能够成功写入数据库没有问题,但是当我尝试获取数据库的结果(使用下一个结果)时,它永远不会运行。

bool outPutBool;
string outPut;

try {
    sql::Driver *driver;
    sql::Connection *con;
    sql::Statement *stmt;
    sql::ResultSet *res;

    string test = getTest();

    /* Create a connection */
    driver = get_driver_instance();
    con = driver->connect("tcp://ip:port", "root", "password");
    /* Connect to the MySQL test database */
    con->setSchema("database name");

    stmt = con->createStatement();
    res = stmt->executeQuery("SELECT `column name` FROM `table name` WHERE `test column` = '" + variable + "'"); //Variable is defined in the function input

    while (res->next()) {
        outPut = res->getString(1);

        cout << outPut << endl;

        cout << "Test\n"; //never runs
    }

    delete res;
    delete stmt;
    delete con;

}
catch (sql::SQLException &e) {
    cout << "# ERR: SQLException in " << __FILE__;
    cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
    cout << "# ERR: " << e.what();
    cout << " (MySQL error code: " << e.getErrorCode();
    cout << ", SQLState: " << e.getSQLState() << " )" << endl;
}

Sleep(10000); //Temporary delay so I can see if anything comes up before it runs another function

if (test != outPut)
    doSomething();
else
    doSomethingElse();

while 循环永远不会运行,我不知道为什么会发生这种情况,因为它似乎适用于很多其他人。我已经在连接器库中包含了所有库和头文件,但没有帮助。

在 phpmyadmin 中使用 SQL Query 函数可以正确显示输出,所以这不是查询的错。

如果有人可以在这里给我一些帮助,我将不胜感激,如果您有任何问题或需要更多我的代码,请提出。非常感谢您的帮助!

4

2 回答 2

0

我不确定如何,但只是在查询和 while 循环之间添加一个cout语句后,它突然自行解决了。我删除了cout,现在它完全没有问题了。不知道是什么导致了这个错误,但我很高兴在我尝试修复它一段时间后它自行解决了!

于 2019-01-17T20:59:30.247 回答
0

当您动态连接一条 SQL 语句并且它没有返回您期望的结果时,通常生成的 SQL 语句与您期望的不一样。

很难判断出了什么问题,因为如果没有您的 DBMS,我们当然无法重现它。但通常人们会将 SQL 语句写入标准输出,然后将其复制到交互式 SQL 控制台,然后看看会发生什么:

std::string query = "SELECT `column name` FROM `table name` WHERE `test column` = '" + variable + "'";
std::cout << query << std::endl;  // open console and copy/paste it to your DBMS 
res = stmt->executeQuery(query); //Variable is defined in the function input
于 2019-01-17T21:03:02.610 回答