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

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Assad Jarrahian <jarraa(at)gmail(dot)com>
Cc: Kris Jurka <books(at)ejurka(dot)com>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]
Date: 2005-11-14 00:16:32
Message-ID: A427CF93-7A30-483A-B98C-FD19B60733F4@fastcrypt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(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
>>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: explain analyze is your friend
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Assad Jarrahian 2005-11-14 04:58:07 ErrorCodes suddenly stopped working? [possibly my programming error]
Previous Message Assad Jarrahian 2005-11-13 23:56:31 Re: passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]