所以 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 ..
我明白它告诉我我不能这样做,但我不明白为什么。
答案 0 :(得分:1)
您正在使用预准备语句如果您不需要在SQL中引用bound
变量,您应该这样做:
pstmt = con->prepareStatement("UPDATE master SET movie=? WHERE choice='Y'");
^^^