Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]

From: Assad Jarrahian <jarraa(at)gmail(dot)com>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]
Date: 2005-11-13 23:56:31
Message-ID: 4bd3e1480511131556o58dbeae8y7a08dc55927010e0@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

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(at)ejurka(dot)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
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2005-11-14 00:16:32 Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]
Previous Message Kris Jurka 2005-11-13 19:02:22 Re: prepareThreshold=1 and statement.executeBatch() ??