引号内的字符串

时间:2013-04-16 00:46:20

标签: c++ prepared-statement mysql-connector

所以 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 ++异常:内存中的sql :: InvalidArgumentException   位置0x00dbe59c ..

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

1 个答案:

答案 0 :(得分:1)

您正在使用预准备语句如果您不需要在SQL中引用bound变量,您应该这样做:

pstmt = con->prepareStatement("UPDATE master SET movie=? WHERE choice='Y'");
                                                      ^^^