当前位置: 首页 > 知识库问答 >
问题:

准备语句不工作时,我做setString但工作时,其硬编码[复制]

上官恩
2023-03-14

这不起作用(表示java.sql.SQLSyntaxErrorException:您的sql语法有错误;请查看与MySQL server版本相对应的手册,以了解第行“tb1”set“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();

问:还有为什么当我尝试打印准备声明对象时,它会添加“值”(引号)?为什么它仍然添加错误消息?

共有1个答案

庾远航
2023-03-14

你不能使用?到动态表名称。您需要使用字符串串联/占位符字符串构造SQL。总体安排准备好的语句用于列值,而不是表名。

 类似资料:
  • 我用语句编写了这段代码,它运行良好: 但当我试图用PreparedStatement转换它时,它却不能处理SQL语法错误。

  • Note: Seafile 服务器 5.0.0 之后,所有配置文件都移动到了统一的 conf 目录下。 了解详情. 从专业版服务器的 2.0.5 版本开始,Seafile 可以使用兼容 S3 的云存储(比如 OpenStack/Swift)作为后端。这篇文档将以使用 Swift 为例。 准备工作 首先您需要为 Swift 启用 S3 的模拟中间件。有关说明可以参考以下链接: http://www.

  • 前言 到最后一节来写“开篇”,确实有点古怪。不过,在第一篇(数值操作)的开头实际上也算是一个小的开篇,那里提到整个系列的前提是需要有一定的 Shell 编程基础,因此,为了能够让没有 Shell 编程基础的读者也可以阅读这个系列,我到最后来重写这个开篇。开篇主要介绍什么是 Shell,Shell 运行环境,Shell 基本语法和调试技巧。 什么是 Shell 首先让我们从下图看看 Shell 在整

  • 现在你知道使用Kotlin实现的小例子了,我确信你会希望尽可能快地把它用在你的实践当中去。不要担心,在第一章中会帮助你去搭建你的开发环境,这样你才能立即编写代码。

  • Note 本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 在开始真正写游戏机制之前,我们首先需要配置一个简单的框架,用来存放这个游戏,这个游戏将会用到几个第三方库,它们的大多数都已经在前面的教程中介绍过了。在需要用到新的库的时候,我会作出适当的介绍。 首先,我们定义一个所谓的超级(Uber)游戏类,它会包含所有相关的渲染