所以 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();
它告诉我在运行程序后不允许我这样做。
Unhandled exception at 0x75c24b32 in Camera Command Line.exe: Microsoft C++ exception: sql::InvalidArgumentException at memory location 0x00dbe59c..
我知道它告诉我我不能这样做,但我不明白为什么。
最佳答案
您正在使用准备好的语句,因此您不需要在 SQL 中引用 bound
变量,您应该这样做:
pstmt = con->prepareStatement("UPDATE master SET movie=? WHERE choice='Y'");
^^^
关于c++ - 引号内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16026961/