如何使用数组列表作为预准备语句参数

2022-09-01 03:11:16

我一直在寻找,但无法找到我所遇到的以下挑战的答案。这似乎很简单,但我一直无法解决它。

我有一个记录 ID 类型为 -> 。我想使用此记录 ID 列表从另一个表中选择行。目前为止,一切都好。现在开始挑战...ArrayListLongArrayList<Long>

a) 我正在使用预准备语句从表中选择数据,并使用 as 输入。ArrayList

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

关于上述问题 - 应该如何定义参数?对于类型参数,上述内容似乎不正确。ArrayList

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

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

您可以为我设置的任何帮助或指导都非常感谢。

谢谢。


答案 1

您可能希望使用下面的javadoc中提到的方法:setArray

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();

答案 2

如果你有 ArrayList,那么请转换为 Array[Object]

ArrayList<String> list = new ArrayList<String>();
PreparedStatement pstmt = 
            conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", list.toArray());
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();

推荐