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

如何将arraylist用作预准备的语句参数

滕祯
2023-03-14
问题内容

我已经看过,但无法找到我遇到的以下挑战的答案。似乎很简单,但我一直无法解决。

我有一个ArrayList类型为Long->的记录ID ArrayList<Long>。我想使用此记录ID列表从另一个表中选择行。到目前为止,一切都很好。现在面对挑战…

a)我正在使用一条准备好的语句从表中选择数据,并ArrayList以此作为输入。

selectPS = dbConnection.prepareStatement("select columnA from tableA where id in ?");

上面的问题-应该如何定义参数?上面对于ArrayList类型参数似乎不正确。

b)在为准备好的语句设置参数值时,我也遇到了问题。没有设置ArrayList类型值的方法,我看不到其他可行的选择。

---> selectPS.set?????(1, arraylistParameter);
     ResultSet rs = selectPS.executeQuery(); 

非常感谢你能为我提供的任何帮助或指示。


问题答案:

你可能要使用setArray下面的javadoc中提到的方法:

http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#setArray(int,java.sql.Array)

样例代码:

PreparedStatement pstmt = 
                conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", new Object[]{"1", "2","3"});
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();


 类似资料:
  • 问题内容: 嗨,我需要在我的网站中使用“准备好的声明”。我尝试使用这个 但这不起作用。当我改变并以它的工作。 问题答案: CodeIgniter不支持预备语句。如果查看CI的Database类的源代码,您将看到它们仅通过用传递的数组中的数据替换问号来解析绑定: https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/

  • 问题内容: 这可能吗?例如 如果没有,我应该这样做吗: 还是我需要学习其他技巧? 问题答案: 表名和列名不能用PDO中的参数替换。请参见PHP PDO语句可以接受表名或列名作为参数吗?

  • 问题内容: 我使用具有2000多个参数标记的大型数据库调用进行构建。 我收到这个错误 我尝试搜索API文档和Google,但是找不到如何配置它。 有谁知道是否有可能提高这个限制?我知道这将是一个缓慢的数据库调用,但是现在还可以。 从长远来看,这还会给我造成任何问题吗,我最好分批运行吗? 问题答案: 接缝处好像停留在2000年。这是驱动程序来源的一部分。 这是一个博客,其中包含有关如何解决该问题的示

  • 我想知道使用比有什么好处? 最简单的方法是: 如您所见,我可以将数据绑定到< code>preparedStatement而无需< code>boundStatements。< code>boundStatement在哪里有用?

  • 问题内容: 是的,当我尝试在看起来像这样的变量上使用bindvalues时,我遇到了一个问题: 现在看起来像这样: 但这不起作用,还尝试了以下方法: 并得到了一些语法错误.. 正确的解决方案是什么?我还以为在bindValue(:firstname,$ firstname%)中添加%,但是我也需要在其他地方使用:firstname,也不应使用%。 帮忙谢谢 问题答案: 好的,添加到绑定值: 接着

  • 我有一个作业必须使用不同的作业参数运行多次。我想设置一个JdbcCursorItemReader来执行对作业的查询,itemReader配置如下: 作业配置如下: 但我得到了这个错误: 我发现了一个非常相似的问题,这个问题和这个问题的区别是,我没有reader类来注释,我只有xml条目,因为我希望避免创建自己的ItemReader。(我可以尝试重写jdbcCursorItemReader类,以便能