Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-jdbc by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group