c++ - 引号内的字符串

标签 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();

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

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/

相关文章:

c++ - 在这种情况下如何创建模板类?

php - PDO PHP 字符串输入以数字 ("2abcd"开始)在 $stmt->bindParam ("2", $id) 中被修剪为只有数字 (':id' );

entity-framework - 没有事务的 Entity Framework 5

python - 与 mysql 的连接速度极慢

c++ - 如何在 Python 中遍历 C++ 集?

c++ - 如何模拟已经编译到库中的类?

c++ - 在没有xml文件的情况下使用c++解析tinyXML xml

python - 在 Python/Pandas/PostgreSQL 中将表名作为函数参数传递

java - Spring Batch 子句中的准备语句

c# - 为什么 MySQL Connector.NET 无法正确地将类型映射到 C# 类型?