【发布时间】:2014-02-04 05:18:40
【问题描述】:
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 没有正确更新,并且保存了奇怪的符号。请问为什么?
【问题讨论】:
-
“s”的确切类型是什么?是
std::string? -
是
std::string,是的 -
setString 的第二个参数期望什么类型?您的
s变量是在调用 execute() 之前一直存在还是在此之前被销毁? -
setString expects sql::SQLString类型。我的变量在调用执行后仍然存在。 -
您尝试
pstmt->setString(1, s.c_str());是否只是为了看看传递一个 C 字符串是否会产生相同的结果?