我正在尝试编写一个程序来从MYSQL表输出一行,它总是输出同样的东西...... 该函数从另一个函数
获取输入C ++
try {
sql::Driver *driver;
sql::Connection *con;
sql::Statement *stmt;
sql::ResultSet *res;
/* Create a connection */
driver = get_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "root", "TSA!");
/* Connect to the MySQL test database */
con->setSchema("main");
stmt = con->createStatement();
stmt->execute("CALL getData('" + quest1 +"', @ans)");
res = stmt->executeQuery("SELECT @ans AS _message");
while (res->next()) {
cout << "Answer: ";
/* Access column data by alias or column name */
cout << res->getString("_message") << endl;
}
delete res;
delete stmt;
delete con;
}
然后是一个不是由该程序触发的错误语句。
的MySQL
CREATE DEFINER=`root`@`localhost` PROCEDURE `getData`(IN info MEDIUMTEXT,
OUT datas MEDIUMTEXT)
BEGIN
SELECT `answer` from `approved` WHERE `Question` = info into datas;
END
表格: 问题|回答 测试|测试 test2 | TEST2
程序始终只输出“测试” 我该如何解决这个问题?
答案 0 :(得分:0)
我通过从用户获取char来使用cin.getline
而不是cin
来输入字符串来修复它。
您可以使用cin
清除现有缓冲区,我认为这是问题所在。