当前位置: 首页 > 面试题库 >

如何在准备好的语句上设置参数列表?

陆才俊
2023-03-14
问题内容

我有一个名字列表,例如:

List<String> names = ...
names.add('charles');
...

并声明:

PreparedStatement stmt = 
  conn.prepareStatement('select * from person where name in ( ? )');

如何执行以下操作:

stmt.setParameterList(1,names);

有解决方法吗?有人可以解释为什么缺少这种方法吗?

使用:java,postgresql,jdbc3


问题答案:

没有干净的方法仅通过在PreparedStatement我所知道的列表上设置列表来执行此操作。

编写代码,以适当数量的问号(与列表中的数字相同)构造​​SQL语句(或更好地替换单个?或类似的标记),然后遍历列表为每个参数设置参数。



 类似资料:
  • 问题内容: 我正在尝试使用准备好的语句来设置表名称以从中选择数据,但是在执行查询时,我总是收到错误消息。 错误和示例代码如下所示。 有什么想法可能会导致这种情况? 问题答案: 表名不能用作参数。它必须是硬编码的。因此,您可以执行以下操作:

  • 问题内容: 我正在自定义由hibernate生成的插入SQL,并遇到了问题。当Hibernate自己生成查询时,它将数据插入表的前两列,但这会导致数据库错误,因为表的所有四列都是不可为空的。为了正确执行插入,它必须将相同的数据插入到新记录的两列中。这意味着我需要Hibernate将相同的数据绑定到我正在编写的查询(准备好的语句)中的两个不同的参数上。 是否有一些SQL语法可让我以与绑定到绑定语句不

  • 问题内容: 我正在尝试使用准备好的语句来设置表名以从中选择数据,但是执行查询时,我总是收到错误消息。 错误和示例代码如下所示。 有什么想法可能导致这种情况? 问题答案: 表名不能用作参数。它必须是硬编码的。因此,你可以执行以下操作:

  • 我有以下准备的一个准备好的声明失败了... 我在我的第一份准备好的声明中几乎有同样的准备,而且它进行得很好。我不确定是否我有两个准备好的声明,如果这是造成一个问题,或情况可能是什么? 现在我有个错误... 更新-可能的内部连接,像这样?

  • 我一直在阅读有关SQL注入的文章,并决定修改我的代码以防止SQL注入。 例如,我有一个输入,我将值插入到我的数据库中。最初,我对注射的警惕是这样的: 在我读过的文章中,有人建议应该使用预准备语句。我更改了我的代码并使用了它: 虽然这可以防止SQL注入,但它不会对XSS做任何事情。所以我决定修改(并使用它来防止脚本注入。 现在,我的问题是如何使用预先准备好的语句。我将插入三个项目;艺术家、专辑和歌曲