]> granicus.if.org Git - postgresql/commitdiff
Wed Jan 31 08:46:00 GMT 2001 peter@retep.org.uk
authorPeter Mount <peter@retep.org.uk>
Wed, 31 Jan 2001 09:23:45 +0000 (09:23 +0000)
committerPeter Mount <peter@retep.org.uk>
Wed, 31 Jan 2001 09:23:45 +0000 (09:23 +0000)
        - Some minor additions to Statement to make our own extensions more
          portable.
        - Statement.close() will now call ResultSet.close() rather than just
          dissasociating with it.

src/interfaces/jdbc/CHANGELOG
src/interfaces/jdbc/example/basic.java
src/interfaces/jdbc/jdbc.jpx
src/interfaces/jdbc/org/postgresql/Statement.java [new file with mode: 0644]
src/interfaces/jdbc/org/postgresql/jdbc1/Statement.java
src/interfaces/jdbc/org/postgresql/jdbc2/Statement.java

index ffc0ce9efb3501b850a6ea43a81b82a83347216c..bbf3952f1a646ebb9333230ec89065086e2d0725 100644 (file)
@@ -1,3 +1,9 @@
+Wed Jan 31 08:46:00 GMT 2001 peter@retep.org.uk
+        - Some minor additions to Statement to make our own extensions more
+          portable.
+        - Statement.close() will now call ResultSet.close() rather than just
+          dissasociating with it.
+
 Tue Jan 30 22:24:00 GMT 2001 peter@retep.org.uk
         - Fixed bug where Statement.setMaxRows() was a global setting. Now
           limited to just itself.
index 5e382538747d32b322b85fc83a527d87d7bd48fa..2c989b4c89af192379bde6a9173f38df1bfc17c0 100644 (file)
@@ -6,7 +6,7 @@ import java.text.*;
 
 /**
  *
- * $Id: basic.java,v 1.6 2001/01/31 08:26:01 peter Exp $
+ * $Id: basic.java,v 1.7 2001/01/31 09:23:45 peter Exp $
  *
  * This example tests the basic components of the JDBC driver, and shows
  * how even the simplest of queries can be implemented.
@@ -86,7 +86,7 @@ public class basic
     // This shows how to get the oid of a just inserted row
     // updated for 7.1
     st.executeUpdate("insert into basic values (4,1)");
-    int insertedOID = ((org.postgresql.jdbc2.Statement)st).getInsertedOID();
+    int insertedOID = ((org.postgresql.Statement)st).getInsertedOID();
     System.out.println("Inserted row with oid "+insertedOID);
 
     // Now change the value of b from 1 to 8
index 2f8a779a6e688cdf21fcc8c7de4f73009ea9799d..19fb6df5344dc69a92e33584777a26cd8e280230 100644 (file)
@@ -9,7 +9,7 @@
   <property category="sys" name="CheckStable" value="1" />\r
   <property category="sys" name="Company" value="" />\r
   <property category="sys" name="Copyright" value="Copyright (c) 2001" />\r
-  <property category="sys" name="DefaultPackage" value="org.postgresql.largeobject" />\r
+  <property category="sys" name="DefaultPackage" value="org.postgresql" />\r
   <property category="sys" name="Description" value="" />\r
   <property category="sys" name="DocPath" value="doc" />\r
   <property category="sys" name="ExcludeClassEnabled" value="0" />\r
diff --git a/src/interfaces/jdbc/org/postgresql/Statement.java b/src/interfaces/jdbc/org/postgresql/Statement.java
new file mode 100644 (file)
index 0000000..105bc81
--- /dev/null
@@ -0,0 +1,42 @@
+package org.postgresql;
+
+import java.sql.SQLException;
+
+/**
+ * This class defines methods implemented by the two subclasses
+ * org.postgresql.jdbc1.Statement and org.postgresql.jdbc2.Statement that are
+ * unique to PostgreSQL's JDBC driver.
+ *
+ * <p>They are defined so that client code can cast to org.postgresql.Statement
+ * without having to predetermine the jdbc driver type.
+ *
+ * <p>ie: Before this class existed, you had to use:
+ *
+ * <p>((org.postgresql.jdbc2.Statement)stat).getInsertedOID();
+ *
+ * <p>now you use:
+ *
+ * <p>((org.postgresql.Statement)stat).getInsertedOID();
+ *
+ * <p>As you can see, this is independent of JDBC1.2, JDBC2.0 or the upcoming
+ * JDBC3.
+ */
+
+public abstract class Statement {
+
+  public Statement() {
+  }
+
+  /**
+    * Returns the status message from the current Result.<p>
+    * This is used internally by the driver.
+    *
+    * @return status message from backend
+    */
+  public abstract String getResultStatusString();
+
+  /**
+   * @return the OID of the last row inserted
+   */
+  public abstract int getInsertedOID() throws SQLException;
+}
\ No newline at end of file
index a4835a72ac57aa75759ddaa3c266faa7d1aab877..2dc617b265fafd202b6e4c445223f8e5069662f4 100644 (file)
@@ -90,7 +90,13 @@ public class Statement implements java.sql.Statement
         */
        public void close() throws SQLException
        {
-               result = null;
+          // Force the ResultSet to close
+          java.sql.ResultSet rs = getResultSet();
+          if(rs!=null)
+            rs.close();
+
+          // Disasociate it from us (For Garbage Collection)
+          result = null;
        }
 
        /**
@@ -327,4 +333,18 @@ public class Statement implements java.sql.Statement
        return null;
      return ((org.postgresql.ResultSet)result).getStatusString();
    }
+
+    /**
+     * New in 7.1: Returns the Last inserted oid. This should be used, rather
+     * than the old method using getResultSet, which for executeUpdate returns
+     * null.
+     * @return OID of last insert
+     */
+    public int getInsertedOID() throws SQLException
+    {
+      if(result!=null)
+        return ((org.postgresql.ResultSet)result).getInsertedOID();
+      return 0;
+    }
+
 }
index a0a40c146955cbcdd066e2195b9da7fa5acb98c3..ec8632a57465cbb5b77cb2f6a734595ebcfe890e 100644 (file)
@@ -22,7 +22,7 @@ import org.postgresql.util.*;
  * @see java.sql.Statement
  * @see ResultSet
  */
-public class Statement implements java.sql.Statement
+public class Statement extends org.postgresql.Statement implements java.sql.Statement
 {
     Connection connection;             // The connection who created us
     java.sql.ResultSet result = null;  // The current results
@@ -95,7 +95,13 @@ public class Statement implements java.sql.Statement
         */
        public void close() throws SQLException
        {
-               result = null;
+          // Force the ResultSet to close
+          java.sql.ResultSet rs = getResultSet();
+          if(rs!=null)
+            rs.close();
+
+          // Disasociate it from us (For Garbage Collection)
+          result = null;
        }
 
        /**