Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()] - Mailing list pgsql-jdbc
From | Dave Cramer |
---|---|
Subject | Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()] |
Date | |
Msg-id | A427CF93-7A30-483A-B98C-FD19B60733F4@fastcrypt.com Whole thread Raw |
In response to | Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()] (Assad Jarrahian <jarraa@gmail.com>) |
Responses |
Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]
|
List | pgsql-jdbc |
This is from a previous post. Dave public static Array convertIntegerToPgSqlArray(final int[] p) { if(p == null || p.length < 1) return null; Array a = new Array() { public String getBaseTypeName() {return "int4";} public int getBaseType() {return 0;} public Object getArray() {return null;} public Object getArray(Map<String, Class<?>> map) {return null;} public Object getArray(long index, int count) {return null;} public Object getArray(long index, int count, Map<String, Class<?>> map) {return null;} public ResultSet getResultSet() {return null;} public ResultSet getResultSet(Map<String, Class<?>> map) {return null;} public ResultSet getResultSet(long index, int count) {return null;} public ResultSet getResultSet(long index, int count, Map<String, Class<?>> map) {return null;} public String toString() { String fp = "{"; if(p.length == 0) { } else { for(int i = 0; i < p.length - 1; i++) fp += p[i] + ","; fp += p[p.length - 1]; } fp+="}"; return fp; } }; On 13-Nov-05, at 6:56 PM, Assad Jarrahian wrote: > Hi Kris and all, > So I did a quick google search and found out all I need in my new > class that implements Array is getBaseType() and toString() [I am not > sure this is true since it is not working! Either that or I am doing > something wrong] > > Code below > > public class IDArray implements Array{ > protected int[] myArray; > > public IDArray(int[] temp ){ > .... > } > public int getBaseType() throws SQLException { > return Types.INTEGER; > } > public String toString(){ > String temp = new String(); > temp+="{"; > for (int i=0;i<arraySize; ++i){ > temp += myArray[i]; > if (i!=arraySize-1) > temp +=","; > } > temp+="}"; > return temp; > } > } > > > When I call it in my java code using > IDArray LM_IDs = new IDArray(new int[]{3,4,5}); > getAssociatedLMs.setObject(1, LM_IDs, java.sql.Types.ARRAY); > > I get an exception thrown (I cant figure this one out). > -1 Unknown type _null. [errorCode message] > > Any pointers help, would be much appreciated. Thanks. > > -assad > > > On 11/13/05, Kris Jurka <books@ejurka.com> wrote: >> >> >> On Sat, 12 Nov 2005, Assad Jarrahian wrote: >> >>> Hello all, >>> my apologies if this question has been asked before. I looked >>> through the archives could not find the relevant info (if I >>> overlooked >>> something, sorry). >>> >>> int[] intarray = new int[1]; >>> getAssociatedLMs.setObject(1, intarray, java.sql.Types.ARRAY); >>> //getAssociatedLM's is a callable statement ("{call getLMs(?,?) } >>> "); >>> >>> so I get a compilation error saying >>> org.postgresql.util.PSQLException: Cannot cast an instance of [I to >>> type Types.ARRAY >> >> Currently the driver only supports passing a specific >> implementation of >> java.sql.Array to setObject (and setArray). Other people have posted >> helper classes to transform some specific java array types to >> java.sql.Array, but these have not been generalized and added to the >> driver. >> >> Kris Jurka >> > > ---------------------------(end of > broadcast)--------------------------- > TIP 6: explain analyze is your friend >
pgsql-jdbc by date: