Re: Update ResultSet

Поиск
Список
Период
Сортировка
От Christian Rengstl
Тема Re: Update ResultSet
Дата
Msg-id 470CE8C9.90AD.0080.0@klinik.uni-regensburg.de
обсуждение исходный текст
Ответ на Re: Update ResultSet  ("Heikki Linnakangas" <heikki@enterprisedb.com>)
Ответы Re: Update ResultSet  ("Heikki Linnakangas" <heikki@enterprisedb.com>)
Re: Update ResultSet  (tivvpgsqljdbc@gtech-ua.com)
Список 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.80106@enterprisedb.com>,
"Heikki Linnakangas" <heikki@enterprisedb.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


В списке pgsql-jdbc по дате отправления:

Предыдущее
От: "Heikki Linnakangas"
Дата:
Сообщение: Re: Update ResultSet
Следующее
От: "Heikki Linnakangas"
Дата:
Сообщение: Re: Update ResultSet