Re: PreparedStatement for set membership (The IN operator)
От | Daron Ryan |
---|---|
Тема | Re: PreparedStatement for set membership (The IN operator) |
Дата | |
Msg-id | 4D9B1C56.7010709@gmail.com обсуждение исходный текст |
Ответ на | Re: PreparedStatement for set membership (The IN operator) (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>) |
Список | pgsql-jdbc |
On 5/04/2011 10:26 PM, Heikki Linnakangas wrote: > On 05.04.2011 15:39, Daron Ryan wrote: >> Thanks Heikki. I have tried using the setArray method but I am still >> running into an error. >> >> Exception in thread "main" org.postgresql.util.PSQLException: Unknown >> type _INTEGER. >> at >> org.postgresql.jdbc2.AbstractJdbc2Statement.setArray(AbstractJdbc2Statement.java:2800) >> >> >> at dictionary.test.Main.main(Main.java:85) >> >> This is the Array implementation I have created. >> http://pastebin.com/tkzPRL4A > > Starting with JDBC4, you can use conn.createArrayOf() function. No > need to create a custom Array class anymore. This is what we have in > the test suite: > > public void testCreateArrayOfInt() throws SQLException { > PreparedStatement pstmt = _conn.prepareStatement("SELECT > ?::int[]"); > Integer in[] = new Integer[3]; > in[0] = 0; > in[1] = -1; > in[2] = 2; > pstmt.setArray(1, _conn.createArrayOf("int4", in)); > > ResultSet rs = pstmt.executeQuery(); > assertTrue(rs.next()); > Array arr = rs.getArray(1); > Integer out[] = (Integer [])arr.getArray(); > > assertEquals(3, out.length); > assertEquals(0, out[0].intValue()); > assertEquals(-1, out[1].intValue()); > assertEquals(2, out[2].intValue()); > } > Thanks, my code is working now. I changed my baseTypeName to int4 and after a few more fixes my code worked. Then I tried the Connection.createArrayOf method and that worked too.
В списке pgsql-jdbc по дате отправления: