0

所以C++ 连接器 mysql的文档说:

sql::Connection *con;
sql::PreparedStatement  *prep_stmt
// ...

prep_stmt = con->prepareStatement("INSERT INTO test(id, label) VALUES (?, ?)");

prep_stmt->setString(2, "a");
prep_stmt->execute();

但是当我输入我的代码时

  pstmt = con->prepareStatement("UPDATE master SET movie='?' WHERE choice='Y'");
  pstmt->setString(1, str);
  pstmt->execute();

它告诉我在运行程序后我不允许这样做。

Camera Command Line.exe 中 0x75c24b32 处未处理的异常:Microsoft C++ 异常:内存位置 0x00dbe59c 处的 sql::InvalidArgumentException。

我知道它告诉我我不能这样做,但我不明白为什么。

4

1 回答 1

1

您正在使用准备好的语句,因此您不需要bound在 SQL 中引用变量,您应该这样做:

pstmt = con->prepareStatement("UPDATE master SET movie=? WHERE choice='Y'");
                                                      ^^^ 
于 2013-04-16T00:49:52.873 回答