当我执行setString时,PreparedStatement不起作用,但当其硬编码时,PreparedStatement不起作用

时间:2018-08-04 10:19:52

标签: java mysql

这不起作用((说java.sql.SQLSyntaxErrorException:您的SQL语法有误;请查看与您的MySQL服务器版本相对应的手册,以获取在'附近使用正确的语法'tb1'在行中设置'name'='newName'其中'id'= 0000' )>

        String queryUpdate = "update ? set ? = ? where ? = ?";
        preparedStmtUpdate.setString(1, "tb1");
        preparedStmtUpdate.setString(2, "name");
        preparedStmtUpdate.setString(3, "newName");
        preparedStmtUpdate.setString(4, "id");
        preparedStmtUpdate.setInt(5, 0000);

这确实有效 >

       String queryUpdate = "update tb1 set named = 'newName' where id = 0000";

然后执行它>

  PreparedStatement preparedStmtUpdate = con.prepareStatement(queryUpdate);
  preparedStmtUpdate.executeUpdate();

问题:当我尝试打印PreparedStatement对象时,为什么还会添加“值”(引号)?为何仍添加错误消息?

1 个答案:

答案 0 :(得分:0)

您不能使用?动态表名称。您需要使用String.format使用字符串连接/占位符构造SQL。准备好的语句用于列值,而不用于表名。