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

使用preparedstatement[重复]时出错

傅阿苏
2023-03-14

当我试图执行这条语句时,出现了错误。我创建了一个包含表名的数组mem[],每个表中有两列,分别是amt(float(9,2))和comb(varchar(5))。

我在for循环中使用了这个语句:

PreparedStatement pst =con.prepareStatement("select sum(amt) from ? where comb = ?");
pst.setString(1,mem[i]);
pst.setString(2, "all");

错误:

通用域名格式。mysql。jdbc。例外情况。jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在第1行“akhil”附近使用的正确语法,其中comb=“all”

在akhil和all one side附近的错误描述中,显示了单引号和另一侧双引号。为什么会这样?错误到底是什么?

共有1个答案

黄兴业
2023-03-14

PreparedStatement中的参数不能替换表名或列名。它们只能替换值。每个表都需要一个单独的PreparedStatement。

 类似资料:
  • 我有一个熊猫数据框,它的键是日期。我正在尝试通过访问多行 , 但是我犯了一个错误

  • 问题内容: 我在我们的代码库上运行了findbugs,它指出还有两个语句仍需要关闭。在代码的这一部分中,我们运行: 3个不同的查询,重用prepareStatement。在finally块中,我们确实关闭了资源: 应该在下一个连接之前关闭该语句。prepareStatement(query); 还是这个findbug谨慎? 问题答案: 是的,在执行下一个connection.prepareStat

  • 问题内容: 我正在尝试执行一个查询,该查询返回一个名和姓串联在一起的学生,该名与搜索键参数相等。 为此,我在班级中管理与班级数据库相关的任何事情。 执行查询时,出现以下错误: 怎么了?我已经检查过这是正确的使用方法 。 并且是在MySQL数据库中。 问题答案: 您的问题是您准备的陈述 正确,但是当您尝试执行PreparedStatement时,将再次提供该字符串: 那是不对的。您已经准备好该语句,

  • 问题内容: 这个问题已经在这里有了答案 : MySQLSyntaxErrorException在“?”附近 尝试执行PreparedStatement时 (2个答案) 2年前关闭。 我尝试使用JDBC使用PreparedStatement通过以下方法插入userId(int)和userName(String): 我得到以下堆栈跟踪: 我究竟做错了什么? 问题答案: 试试这个,这应该工作: Prep

  • 我需要一个线程等待一段时间,然后在TextView中更改文本。我的搜索找到了如何使用runOnUiThread 提前感谢您的帮助。

  • 问题内容: 这个问题已经在这里有了答案 : MySQLSyntaxErrorException在“?”附近 尝试执行PreparedStatement时 (2个答案) 5年前关闭。 我使用PreparedStatements准备查询,当我使用condition参数对查询进行硬编码时,它运行良好。 但如果从setString()方法传递参数,则会抛出错误。 在错误日志中,我的查询上方看起来不错。 P