moveToInsertRow SQL Exception "No Primary Keys" - Mailing list pgsql-jdbc
From | jr@amanue.com (Jim Rosenberg) |
---|---|
Subject | moveToInsertRow SQL Exception "No Primary Keys" |
Date | |
Msg-id | 20030205195235.30EED1120D@memero.amanue.com Whole thread Raw |
Responses |
Re: moveToInsertRow SQL Exception "No Primary Keys"
Re: moveToInsertRow SQL Exception "No Primary Keys" |
List | pgsql-jdbc |
I am fairly new to PostgreSQL and completely new to JDBC. I am trying to follow along with the White et al _JDBC API Tutorial and Reference_, 2nd edition, from Addison Wesley, and cannot get moveToInsertRow to work. A thread from a few weeks ago discussed this issue; the poster was told that tables need a primary key for updatable result sets. We can argue about whether the designers of JDBC intended this (I believe they didn't ...) but on the other hand I don't have a problem with the idea that every table should have a primary key in my databases. When I put a primary key in the table coffees below I am still getting a SQL Exception "No Primary Keys" from moveToInsertRow. Here is the schema: CREATE TABLE coffees ( cof_name character varying(32) NOT NULL, sup_id integer, price double precision, sales integer, total integer ); -- -- TOC entry 3 (OID 355664) -- Name: pi_coffees; Type: CONSTRAINT; Schema: public; Owner: jr -- ALTER TABLE ONLY coffees ADD CONSTRAINT pi_coffees PRIMARY KEY (cof_name); And below is the code. It doesn't get any farther than printing out Boo1: Beagle.local. 25% java InsertRow Boo1 SQLException: No Primary Keys My JDBC driver says it's 7.3 -- I'm not sure what build. PostgreSQL version is 7.3, OS is Mac OS 10.2.3. I don't see why moveToInsertRow is failing here, any help would be welcome. If I recall correctly, the White et al book is linked on the PostgreSQL JDBC web site; one would think from this that the code from the book would work ... -Thanks, Jim /* * @(#)Graph.java 1.7 98/07/17 * * Copyright 1997, 1998, 1999 Sun Microsystems, Inc. All Rights Reserved. * * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, * modify and redistribute this software in source and binary code form, * provided that i) this copyright notice and license appear on all copies of * the software; and ii) Licensee does not utilize the software in a manner * which is disparaging to Sun. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * * This software is not designed or intended for use in on-line control of * aircraft, air traffic, aircraft navigation or aircraft communications; or in * the design, construction, operation or maintenance of any nuclear * facility. Licensee represents and warrants that it will not use or * redistribute the Software for such purposes. */ import java.sql.*; public class InsertRow { public static void main(String args[]) { String url = "jdbc:postgresql://localhost/jdbc_book"; Connection con; Statement stmt; String query = "select COF_NAME, PRICE from COFFEES"; try { Class.forName("org.postgresql.Driver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("Hey, fluffy, ClassNotFoundException: "); System.err.println(e.getMessage()); } try { con = DriverManager.getConnection(url, "jr", ""); stmt = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet uprs = stmt.executeQuery( "SELECT * FROM COFFEES"); System.out.println("Boo1"); uprs.moveToInsertRow(); System.out.println("Boo2"); uprs.updateString("COF_NAME", "Kona"); uprs.updateInt("SUP_ID", 150); uprs.updateFloat("PRICE", 10.99f); uprs.updateInt("SALES", 0); uprs.updateInt("TOTAL", 0); uprs.insertRow(); uprs.beforeFirst(); System.out.println("Table COFFEES after insertion:"); while (uprs.next()) { String s = uprs.getString("COF_NAME"); int sup = uprs.getInt("SUP_ID"); float f = uprs.getFloat("PRICE"); int sales = uprs.getInt("SALES"); int t = uprs.getInt("TOTAL"); System.out.print(s + " " + sup + " " + f + " "); System.out.println(sales + " " + t); } uprs.close(); stmt.close(); con.close(); } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } } } --- Jim Rosenberg http://www.well.com/user/jer/ WELL: jer Internet: jr@amanue.com
pgsql-jdbc by date: