我需要在mysql表中搜索C ++应用程序中用户指定的字符串。这意味着我必须使用准备好的语句来防止SQL注入。我遇到的问题是,找不到任何可以帮助我使用带返回值的预备语句的教程。 即:
"Select id from db where name = ?".
如何获取匹配的值?
我在SO上找到了此示例代码,但是它不起作用:
// use std::unique_ptr, boost::shared_ptr, or whatever is most appropriate for RAII
// Connector/C++ requires boost, so
std::unique_ptr<sql::Connection> db;
std::unique_ptr<sql::PreparedStatement> getPassword
std::unique_ptr<sql::ResultSet> result;
std::string name = "Nikolai Gogol";
std::string password;
...
getPassword = db->prepareStatement("SELECT pass FROM users WHERE name=? LIMIT 1");
getPassword->setString(1, name);
result = getPassword->execute();
if (result->first()) {
password = result->getString("pass");
} else {
// no result
...
}
// smart pointers will handle deleting the sql::* instances