From: | David Goodenough <david(dot)goodenough(at)btconnect(dot)com> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | Re: setString and timestamps |
Date: | 2006-02-20 14:31:55 |
Message-ID: | 200602201431.55800.david.goodenough@btconnect.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
On Friday 17 February 2006 18:33, Kris Jurka wrote:
> On Fri, 17 Feb 2006, David Goodenough wrote:
> > I understand from looking at the archive that there some changes around
> > 8.0 in this area, but I am confused as to how to proceed.
> >
> > I have some code which takes a table and inserts values into it where the
> > values have come from XML and are thus all strings. Some of these XML
> > fields are timestamps, but this generic code does not have table specific
> > knowledge.
> >
> > From what I have read I think I have to use something like the metadata
> > for this table to find the type of this column, and if it is a timestamp
> > then I need to take the string and convert it into a timestamp before I
> > set it into the parameterized insert. Is this right, and are there any
> > other datatypes which are not implicitly converted from String to
> > whatever is necessary?
>
> In the 8.0 and 8.1 driver all types have strong typing information. You
> can see this with integers as well. The driver will do the equivalent of:
>
> jurka=# create table inttest(a int);
> CREATE TABLE
> jurka=# insert into inttest values('1'::varchar);
> ERROR: column "a" is of type integer but expression is of type character
> varying
> HINT: You will need to rewrite or cast the expression.
>
> If you really have only string data and no typing information your best
> bet is probably to use an 8.2dev driver and set the stringtype=unspecified
> URL parameter to restore the old behavior of automatic type
> interpretation.
>
> http://jdbc.postgresql.org/documentation/head/connect.html#connection-param
>eters
>
> Kris Jurka
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
What is the best way of finding the column types in generic code. That is to
say if I have a method with no knowledge of a specific table and I am about
to do an insert and I wish to get the parameters in the correct format what
APIs exist that allow me to find out the type of a named column. I have
looked through the JDBC docs without success so far, but it may be that
I am looking for the wrong thing. If I need to use a Postgresql only API
that is fine.
Thanks
David
From | Date | Subject | |
---|---|---|---|
Next Message | Kris Jurka | 2006-02-20 17:42:16 | Re: setString and timestamps |
Previous Message | Thomas Burdairon | 2006-02-20 12:58:44 | PreparedStatement clearParameters |