Re: Update ResultSet

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: Update ResultSet
Дата
Msg-id 470CCB67.80106@enterprisedb.com
обсуждение исходный текст
Ответ на Update ResultSet  ("Christian Rengstl" <Christian.Rengstl@klinik.uni-regensburg.de>)
Ответы Re: Update ResultSet  ("Christian Rengstl" <Christian.Rengstl@klinik.uni-regensburg.de>)
Список pgsql-jdbc
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(AbstractJdbc2ResultSet.java:1547)
>         at
> org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkUpdateable(AbstractJdbc2ResultSet.java:2550)
>         at
> org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateValue(AbstractJdbc2ResultSet.java:2796)
>         at
> org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultSet.java:1309)
>         at
> org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultSet.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:387)
>         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

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

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