Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Передать String[] параметром


Автор: yuliada 21.7.2009, 05:05
В базе (PostgreSQL) есть функция, которая принимает параметр типа text[]. Нужно вызвать эту функцию через PreparedStatement и передать ей параметр. Вот так не получается:
Код

        Array arr = c.createArrayOf("text", new String[]{"a", "b", "c"});
        //Array arr = c.createArrayOf("integer", new Integer[]{1, 2, 3});
        ps.setArray(1, arr);

Падает на создании Array с любыми параметрами с ошибкой:
Код

Exception in thread "main" java.lang.AbstractMethodError: org.postgresql.jdbc3.Jdbc3Connection.createArrayOf(Ljava/lang/String;
[Ljava/lang/Object;)Ljava/sql/Array;
        at aoutomapping.cash.DBCash.loadOREFSFromDB(DBCash.java:261)
        at aoutomapping.cash.DBCash.<init>(DBCash.java:66)
        at aoutomapping.cash.DBCash.main(DBCash.java:289)


ps.setObject(1, new String[]{"a", "b", "c"}); тоже не работает.
Код

Exception in thread "main" org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of [Ljava.lang.String;. Use setObject()
with an explicit Types value to specify the type to use.
        at org.postgresql.jdbc2.AbstractJdbc2Statement.setObject(AbstractJdbc2Statement.java:1740)
        at aoutomapping.cash.DBCash.loadOREFSFromDB(DBCash.java:264)
        at aoutomapping.cash.DBCash.<init>(DBCash.java:66)
        at aoutomapping.cash.DBCash.main(DBCash.java:289)

передавать в setObject() Types.ARRAY не помогает.

 Запихивать параметры в строчку и делать через просто Satement наверно нельзя, строки будут слишком длинные.

Как это можно сделать?

Автор: Andy_L20066 22.7.2009, 16:51
гугл форева...

http://www.nabble.com/Trying-to-insert-an-array-using-a-prepared-statement.-td21211517.html

Автор: yuliada 26.7.2009, 02:44
Т.е. мне нужно реализацию Array написать? А есть пример где-нибудь? Что-то не находится...

Автор: yuliada 31.7.2009, 07:14
Надо было взять последний драйвер с поддержкой JDBC4, там работает createArrayOf

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)