C ++ MySQL prepareStatement

时间:2014-02-04 05:18:40

标签: c++ mysql

    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是输入字符串,列nameVARCHARageINT

代码按预期更新所有行。 age是正确的,但name未正确更新,并且保存了奇怪的符号。为什么,拜托?

1 个答案:

答案 0 :(得分:1)

由于我的评论似乎是正确的,我会将其作为答案发布:)

使用

pstmt->setString(1, s.c_str());

(即传递一个实际的C风格字符串,而不是std::string)。

我知道为什么这会解决这个问题的解释,但由于我不是100%肯定这个解释,请在问题下面看我的评论,因为我的思考为什么它有效