Home > Archive > PostgreSQL JDBC > November 2005 > passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author passing array as parameters to PrepareStatement or callable statement.[setObject() or setArray()]
Assad Jarrahian

2005-11-12, 1:23 pm

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
at org.postgresql.jdbc2. AbstractJdbc2Stateme
nt. setObject(AbstractJd
bc2Statement.java:1637)
at org.postgresql.jdbc3. AbstractJdbc3Stateme
nt. setObject(AbstractJd
bc3Statement.java:1435)
at org.postgresql.jdbc2. AbstractJdbc2Stateme
nt. setObject(AbstractJd
bc2Statement.java:1652)
at //the setObjectLineAbove


IF I change it to type Integer[]
org.postgresql.util.PSQLException: Cannot cast an instance of
[Ljava.lang.Integer; to type Types.ARRAY
at org.postgresql.jdbc2. AbstractJdbc2Stateme
nt. setObject(AbstractJd
bc2Statement.java:1637)
.......


I notice Dave Cramer mentioned something about this could be an
easier process. But what is the process now? (aka, am I completely
off?)
Much thanks in advance.

Assad

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Assad Jarrahian

2005-11-13, 8:23 pm

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:
>
>
> 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

Dave Cramer

2005-11-13, 8:23 pm

This is from a previous post.

Dave
public static Array convertIntegerToPgSq
lArray(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:
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: explain analyze is your friend
>



---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql
.org so that your
message can get through to the mailing list cleanly

Jojo Paderes

2005-11-20, 11:25 am

Is the Array class used in the method refers to java.sql.Array? If
yes, I think it's not possible to use that to create an object since
it is an interface.

On 11/14/05, Dave Cramer <pg@fastcrypt.com> wrote:
> This is from a previous post.
>
> Dave
> public static Array convertIntegerToPgSq
lArray(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:
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql
.org so that your
> message can get through to the mailing list cleanly
>



--
You can make a difference!
http://gawadkalinga.org
http://www.childrenshour.org.ph
http://www.handsonmla.org

http://groups.yahoo.com/group/pinoyjug
http://jojopaderes.blogsome.com
http://jojopaderes.multiply.com

"In preparing for battle I have always found that plans are useless,
but planning is indispensable." - Eisenhower

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Jojo Paderes

2005-11-21, 3:23 am

Ah, didn't notice that. Thanks for the clarification :-)

On 11/21/05, Oliver Jowett <oliver@opencloud.com> wrote:
> Jojo Paderes wrote:
>
> Yes it's java.sql.Array, but the code is creating an instance of an
> anonymous inner class that implements Array, which is fine:
>
> [...]
>
> -O
>



--
You can make the world a better place for humanity!
http://gawadkalinga.org
http://www.childrenshour.org.ph
http://www.handsonmla.org

http://groups.yahoo.com/group/pinoyjug
http://jojopaderes.blogsome.com
http://jojopaderes.multiply.com

"In preparing for battle I have always found that plans are useless,
but planning is indispensable." - Eisenhower

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com