Re: Prepared Statements - Mailing list pgsql-jdbc

From Fernando Nasser
Subject Re: Prepared Statements
Date
Msg-id 3F1C0613.9090100@redhat.com
Whole thread Raw
In response to Re: Prepared Statements  (Kim Ho <kho@redhat.com>)
Responses Re: Prepared Statements  (Csaba Nagy <nagy@ecircle-ag.com>)
IN clauses via setObject(Collection) [Was: Re: Prepared Statements]  (Oliver Jowett <oliver@opencloud.com>)
List pgsql-jdbc

Oliver Jowett wrote:> On Mon, Jul 21, 2003 at 10:43:28AM -0400, Dmitry Tkach wrote:
>
>>Oliver Jowett wrote:
>>
>>
>>>On Mon, Jul 21, 2003 at 10:27:30AM -0400, Dmitry Tkach wrote:
>>>
>>>
>>>
>>>
>>>>Why not just allow setObject() to take Collection as an argument?
>>>>
>>>>
>>>
>>>You need information on the SQL type of the contents to be able to turn
>>>them
>>>into a DB representation correctly. We can't use the type parameter to
>>>setObject() for this as that should reflect the whole paramater, i.e.
>>>probably Types.OTHER in this case.
>>>
>>
>>It doesn't seem to be required anywhere - it just says "the type to be
>>sent to the database" in the description of that
>>argument. You can interpret it to be the type of the contents when
>>dealing with collections/sets/arrays
>
>
> java.sql.Types has pretty explicit mappings between type values and SQL
> types. A collection of integers is definitely not a SQL INTEGER.
>
> Types.OTHER says:
>
>   The constant in the Java programming language that indicates that the SQL
>   type is database-specific and gets mapped to a Java object that can be
>   accessed via the methods getObject and setObject.
>
> which fits this use of Collection.
>
> Responding to comments elsewhere .. you do need the component type to behave
> correctly. For example, these produce different results:
>
>  setObject(1, new Date(...), Types.STRING)
>  setObject(1, new Date(...), Types.TIMESTAMP)
>

Oliver,

I think Dima is arguing that Collection could be treated as an special case
where it indicates a list of something instead of a single something.

So, we would iterate through this Collection using its iterator and, for each
Object obtained, act like a setObject has been used with that Object and the
JAVA TYPE as an argument.

The Types.OTHER is used for database specific SQL types or for Dynamic Data
Access support.  As the Collection class is not a data type there is no chance
of confusion.

It seems that Dima's idea can indeed work.

Regards,
Fernando



--
Fernando Nasser
Red Hat - Toronto                       E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9


pgsql-jdbc by date:

Previous
From: Dmitry Tkach
Date:
Subject: Re: Prepared Statements
Next
From: Csaba Nagy
Date:
Subject: Re: Prepared Statements