Skip site navigation (1) Skip section navigation (2)

Re: Update ResultSet

From: "Christian Rengstl" <Christian(dot)Rengstl(at)klinik(dot)uni-regensburg(dot)de>
To: "Heikki Linnakangas" <heikki(at)enterprisedb(dot)com>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Update ResultSet
Date: 2007-10-10 12:57:47
Message-ID: 470CE8C9.90AD.0080.0@klinik.uni-regensburg.de (view raw or flat)
Thread:
Lists: pgsql-jdbc
And I suppose there is no reasonable workaround, is there?


Christian Rengstl M.A.
Klinik und Poliklinik für Innere Medizin II
Kardiologie - Forschung
Universitätsklinikum Regensburg
B3 1.388
Franz-Josef-Strauss-Allee 11
93053 Regensburg
Tel.: +49-941-944-7230




>>> On Wed, Oct 10, 2007 at  2:53 PM, in message
<470CCB67(dot)80106(at)enterprisedb(dot)com>,
"Heikki Linnakangas" <heikki(at)enterprisedb(dot)com> wrote: 
> Only simple result sets coming from a single table, with no joins,
are
> updateable. Granted, the error message is misleading. The driver has
to
> parse the query, to extract the name of the table to update or throw
an
> error if there's more than one table involved. In this case, it
doesn't
> understand the INNER JOIN, and therefore you get the misleading
error
> message instead of this: "ResultSet is not updateable.  The query
that
> generated this result set must select only one table, and must
select
> all primary keys from that table. See the JDBC 2.1 API
Specification,
> section 5.6 for more details."
> 
> Christian Rengstl wrote:
>> Hi everyone,
>> 
>> I have a query including an inner join, which I execute to obtain a
>> ResultSet, but when I execute the following piece of code I get an
error
>> message saying that it could not update the table because it could
not
>> find the primary key for a table.
>> rs.first();
>> rs.updateString("gene", "TestGen");
>> rs.updateRow();
>> 
>> Here is my query:
>> SELECT gene_entropy.gene, gene_entropy.entropy,
gene_entropy.iteration,
>> snp_entropy.snp_id
>>    FROM clustering.gene_entropy INNER JOIN clustering.snp_entropy
>> USING(gene) limit 5;
>> 
>> And here is the stacktrace:
>> org.postgresql.util.PSQLException: Für die Tebelle
>> (clustering.gene_entropy konnte kein Primärschlüssel gefunden
werden.
>>         at
>> 
>
org.postgresql.jdbc2.AbstractJdbc2ResultSet.isUpdateable(AbstractJdbc2ResultS
> et.java:1547)
>>         at
>> 
>
org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkUpdateable(AbstractJdbc2Resu
> ltSet.java:2550)
>>         at
>> 
>
org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateValue(AbstractJdbc2ResultSe
> t.java:2796)
>>         at
>> 
>
org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultS
> et.java:1309)
>>         at
>> 
>
org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultS
> et.java:1394)
>>         at
>> 
>
myapp.ui.event.DBTableFrameListener.actionPerformed(DBTableFrameListener.java
> :406)
>>         at
>>
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
>>         at
>>
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
>>         at
>> 
>
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:38
> 7)
>>         at
>>
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
>>         at
>> 
>
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.
> java:236)
>>         at
>>
java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
>>         at
java.awt.Component.processMouseEvent(Component.java:6038)
>>         at
>> javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
>>         at java.awt.Component.processEvent(Component.java:5803)
>>         at java.awt.Container.processEvent(Container.java:2058)
>>         at
java.awt.Component.dispatchEventImpl(Component.java:4410)
>>         at
java.awt.Container.dispatchEventImpl(Container.java:2116)
>>         at java.awt.Component.dispatchEvent(Component.java:4240)
>>         at
>>
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
>>         at
>>
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
>>         at
>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
>>         at
java.awt.Container.dispatchEventImpl(Container.java:2102)
>>         at java.awt.Window.dispatchEventImpl(Window.java:2429)
>>         at java.awt.Component.dispatchEvent(Component.java:4240)
>>         at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>         at
>> 
>
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
> 273)
>>         at
>> 
>
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183
> )
>>         at
>> 
>
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:
> 173)
>>         at
>>
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
>>         at
>>
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
>>         at
>> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>> 
>> I am more than happy and thankful for any advice!
> 
> 
> -- 
>   Heikki Linnakangas
>   EnterpriseDB   http://www.enterprisedb.com
> 
> ---------------------------(end of
broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>        choose an index scan if your joining column's datatypes do
not
>        match


In response to

Responses

pgsql-jdbc by date

Next:From: Heikki LinnakangasDate: 2007-10-10 13:02:34
Subject: Re: Update ResultSet
Previous:From: Heikki LinnakangasDate: 2007-10-10 12:53:59
Subject: Re: Update ResultSet

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group