sql::Connection *con;
sql::PreparedStatement *pstmt;
//connect
pstmt = con->prepareStatement("UPDATE table_people SET name=?, age=?");
pstmt->setString(1, s);
pstmt->setInt(2, age());
pstmt->execute();
std::string s
是输入字符串,列name
为VARCHAR
,age
为INT
代码按预期更新所有行。 age
是正确的,但name
未正确更新,并且保存了奇怪的符号。为什么,拜托?
答案 0 :(得分:1)
由于我的评论似乎是正确的,我会将其作为答案发布:)
使用
pstmt->setString(1, s.c_str());
(即传递一个实际的C风格字符串,而不是std::string
)。
我想我知道为什么这会解决这个问题的解释,但由于我不是100%肯定这个解释,请在问题下面看我的评论,因为我的思考为什么它有效