Re: Question

From: Franco Bruno Borghesi <franco(at)akyasociados(dot)com(dot)ar>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Question
Date: 2004-11-13 18:25:10
Message-ID: 41965186.4040300@akyasociados.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Thanks for the answer Kris. I've fixed a generic replace method that I
had written, so it looks like this now (I've simplified it for the example):

private void replateArgs(PreparedStatement stmt, Object[] values, int
offset) {

for (int i, count=values.length; i<count; i++) {

//is it a Character?
if (values[i] instanceof Character)
pstmt.setObject(offset+i, values[i].toString());
else {

//is it a Date?
if (values[i] instanceof java.util.Date)
pstmt.setObject(offset+i, values[i], Types.TIMESTAMP);
//all my tables have timestamp dates
else //anything else seems to work
pstmt.setObject(offset+i, values[i]); //any other thing
}
}
}

It works fine, except for NULL values. With the old driver,
setObject(int, null) was ok, but I've seen that I should be using
setNull(int, int) with the new version.

As you see, in my current code I have no way to know to which datatype
the field maps to. So, is there any easy/generic way to set NULLs, no
matter what datatype the field is?

Thanks again.

Kris Jurka wrote:

>On Sat, 13 Nov 2004, Franco Bruno Borghesi wrote:
>
>
>
>>Hi all.
>>
>>I've donwloaded pg80b1.308.jdbc3.jar from jdbc.postgresql.org and now my
>>calls to PreparedStatement.setObject(int, Object) are failing, when they
>>used to work with the previous driver version.
>>
>>The message I get is: "Cant infer the SQL type to use for an instance of
>>{0}. Use setObject() with an explicit Types value to specify the type to
>>use.".
>>
>>Calling setObject(int, Object, Types.xxxxx) works ok, but I need
>>setObject(int, Object). I've tryied setObject(int, Character) and
>>setObject(int, java.util.Date) and both fail with the same message.
>>Haven't tested other cases.
>>
>>
>
>setObject(int, Object) has a limited number of types that it knows about
>(and Character and java.util.Date aren't in them). Using String and
>java.sql.Date will work but you probably don't want to do that. Supposing
>we did add these two types to setObject's knowledge, what does
>java.util.Date map to? With java.sql.Date/Time/Timestamp you know what
>datatype you are really talking about.
>
>Kris Jurka
>
>
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Oliver Jowett 2004-11-13 22:51:53 Re: Question
Previous Message Kris Jurka 2004-11-13 17:04:52 Re: Question