Start support for Sqlite
[cfb.git] / prod / net / jaekl / cfb / db / driver / PostgresqlDriver.java
index fbb328503add803379a1cab500a959bdefc0c9f0..a828d7fc651a84f3d034b6aa8e6452ab3f17cbfc 100644 (file)
@@ -4,6 +4,8 @@ package net.jaekl.cfb.db.driver;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Properties;
 
@@ -31,11 +33,23 @@ public class PostgresqlDriver extends DbDriver {
        }
        
        @Override 
-       public String nextValSql(Sequence seq) 
+       public long nextVal(Connection con, Sequence seq) throws SQLException
        {
-               return " SELECT NEXTVAL('" + seq.getName() + "') ";
+               String sql = " SELECT NEXTVAL('" + seq.getName() + "') ";
+               
+               try (PreparedStatement ps = con.prepareStatement(sql)) 
+               {
+                       try (ResultSet rs = ps.executeQuery()) {
+                               if (rs.next()) {
+                                       return rs.getLong(1);
+                               }
+                       }
+               }
+               
+               throw new SQLException("No value returned for sequence:  " + sql);
        }
        
+       
        @Override
        protected String typeName(Type type) {
                // Special case:  TIMESTAMPTZ stored as INTEGER (milliseconds since the epoch)