Thread: AJ1Stmt.setObject()
I think AbstractJdbc1Statement.setObject(int,Object) needs to know how to handle Java array types. Last month someone mentioned the desire for using binary protocols and I agree. Until then, I'd guess that setObject( new int[]{1,2,3} ) should do setString( "{1,2,3}" ) And so on for the other Java primitive types and String. I suppose for Object[] one would get "{" + x[0].toString() + "," + x[1].toString() ... "}" That would match the current setObject behavior of defaulting to the toString() value. My problem is that I don't see any other way in jdbc to set array elements of rows. So, this must be it, though unimplemented here. I could probably whip this up in a couple hours. I'm looking for feed back on whether it's the right thing to do. Brian Olson http://bolson.org/
Brian Olson wrote: > I think AbstractJdbc1Statement.setObject(int,Object) needs to know how > to handle Java array types. How do you specify how to interpret the elements of the array? e.g. how should this be handled? : Object[] awkwardArray = new Object[] { new Integer(42), "42", "foo" }; statement.setObject(1, awkwardArray); > My problem is that I don't see any other way in jdbc to set array > elements of rows. So, this must be it, though unimplemented here. JDBC2's PreparedStatement.setArray() is the standard way: you wrap the underlying array in an appropriate Array implementation of your own. This also solves the problem of deciding how to interpret the array elements: the Array interface allows you to explicitly provide a SQL type for the elements. However the CVS driver does not implement setArray usefully for this case. I have an unapplied patch that was posted to the list some time ago that implements this (getting quite old now..), which is a bit of a nasty hack but does the job. See http://archives.postgresql.org/pgsql-jdbc/2003-07/msg00294.php -O