SQL

带引号的PreparedStatement.setString()方法

发布于 2021-05-10 21:34:45

我正在尝试将PreparedStatement与以下代码结合使用:

SELECT * FROM ? WHERE name = ?

显然,当我使用setString()设置表和名称字段时会发生以下情况:

SELECT * FROM 'my_table' WHERE name = 'whatever'

并且查询不起作用。有没有一种方法可以设置不带引号的字符串,因此该行如下所示:

SELECT * FROM my_table WHERE name = 'whatever'

还是我应该放弃它而使用常规语句(参数来自系统的另一部分,用户均未输入)?

关注者
0
被浏览
554
1 个回答
  • 面试哥
    面试哥 2021-05-10
    为面试而生,有面试问题,就找面试哥。

    参数不能用于参数化表或参数化任何数据库对象。它们主要用于参数化WHERE / HAVING子句。

    要执行您想要的操作,您需要自己进行替换并根据需要创建一个常规语句。

    当您使用准备好的语句时,这是对数据库的提示,可以对语句进行前处理-
    例如,解析字符串并可能确定执行计划。如果查询中使用的对象可以动态更改,则数据库无法做很多前期准备。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看