如何将 int[] 数组转换为 java.sql.Array?

4

我试图将一些整数值附加到我的数据库中,我已经建立了这个预处理语句:

 stmt = connection.prepareStatement("UPDATE domotica.artefatti SET id_sensori = array_append(id_sensori,?) WHERE id=?");

我有一个整数数组,如下所示:

int [] integerarray = {values...};

我想要转换/转型,以便我可以做这样的事情:
stmt.setArray(1,correctarray);
1个回答

4

您需要通过连接创建一个JDBC数组实例。但是这只接受一个Object[],因此您需要将int[]数组转换为该类型:

int[] intlist = {....};
Object[] values = Arrays.stream(intlist).mapToObj(i -> Integer.valueOf(i)).toArray();
Array array = con.createArrayOf("int", values);
pstmt.setArray(1, array);

注意,array_append()不能用于将一个数组附加到另一个数组中。如果您将数组传递给PreparedStatement,您需要使用array_cat()来实现。


这基本上是正确的。虽然JDBC规定数组必须是对象,但PgJDBC驱动程序支持原始int数组。请参见https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/jdbc/ArrayEncoding.java - coladict
@coladict:但是Connection.createArrayOf()只接受Object[] - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接