Re: JDBC4 with SQLXML and postgresql-8.4-702.jdbc4.jar

From: Michael musset <mickamusset(at)gmail(dot)com>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JDBC4 with SQLXML and postgresql-8.4-702.jdbc4.jar
Date: 2010-10-23 11:42:08
Message-ID: AANLkTikXBAnKyZkTgk2AJwGAXZppZ8qYC8FSuTmxoU6O@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

One thing that i regret about SQLXML object, is that you can't do at the
same time :

1) get an SQLXML Object from a resultset
2) modify It
3) update the SQLXML Object to the resultset
4) updaterow

I've tried this :

// retrieve an SQLXML object from the ResultSet:
SQLXML sqlxml = resultSet.getSQLXML(1); // 1 is the column index
// obtain DOM tree from SQLXML object:
DOMSource source = sqlxml.getSource(DOMSource.class);

// create document object from DOMSource:
Document document = (Document) source.getNode();

modify the document here

resultSet.setSQLXML(1,sqlxml );
resultSet.updaterow();

but it doesn't work.

If someone is interesting about getting data and updating data in xml.

my method is to get a string from my xml.
parse it
modify the data

and :

SQLXML sqlxml = con.createSQLXML();
DOMResult domResult=sqlxml.setResult(DOMResult.class)
domResult.setNode(xmldocumentDOM);
stmt.setSQLXML(1, sqlxml);
stmt.execute();

It's work .... but it's not beautiful ......

anyway, thank for the help !

On Sat, Oct 23, 2010 at 8:25 AM, Kris Jurka <books(at)ejurka(dot)com> wrote:

>
>
> On Thu, 21 Oct 2010, Kris Jurka wrote:
>
> On Tue, 19 Oct 2010, Michael musset wrote:
>>
>> java.lang.ClassCastException: org.postgresql.jdbc4.Jdbc4SQLXML cannot be
>>> cast to [B
>>>
>>> atorg.postgresql.jdbc2.AbstractJdbc2ResultSet.updateRowBuffer(AbstractJdbc2Re
>>> sultSet.java:1729)
>>>
>>> atorg.postgresql.jdbc2.AbstractJdbc2ResultSet.updateRow(AbstractJdbc2ResultSe
>>> t.java:1291)
>>>
>>> SQLXML sqlxml = con.createSQLXML();
>>> DOMResult domResult=sqlxml.setResult(DOMResult.class)
>>> domResult.setNode(xmldocumentDOM);
>>>
>>> stmt.setSQLXML(1, sqlxml);
>>> stmt.execute();
>>>
>>>
>> Your sample code and stacktrace don't seem to match, but I see what the
>> problem is. The updatable ResultSet code isn't prepared for handling a
>> SQLXML object. It's slightly tricky to fix because the code in question is
>> in a JDBC2 class while SQLXML is JDBC4 only. I'll look into it.
>>
>>
> I've put a fix for this into CVS. I've uploaded a new jar file here:
>
> http://ejurka.com/pgsql/jars/xml/
>
> Kris Jurka
>

--
Michael Musset,
Tel: 06 26 06 29 89

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message dmp 2010-10-23 15:30:34 Re: Bug in DatabaseMetaData.getColumns() with columns based on domains
Previous Message Michael musset 2010-10-23 10:30:36 Re: JDBC4 with SQLXML and postgresql-8.4-702.jdbc4.jar