Java SE 8の一部であるJDBC 4.2には、次の機能が導入されています。
java.sql.DriverAction
インタフェースの追加java.sql.SQLType
インタフェースの追加java.sql.JDBCType
列挙の追加いくつかのデータベースでREF_CURSORデータ型がサポートされています。 ストアド・プロシージャからREF_CURSORを返すには、CallableStatement.registerOutParameter
メソッドを使用し、返されるデータ型としてTypes.REF_CURSOR
を指定します。 REF_CURSORを表すResultSetインスタンスを取得するには、CallablStatement.getObject
メソッドを呼び出し、返されるオブジェクトの変換先のデータ型としてResultSet
を指定します。 返される結果セットは、順方向で読取り専用の結果セットです。
registerOutParameter
メソッドを呼び出し、返されるデータ型としてTypes.REF_CURSOR
を指定しても、このデータ型がJDBCドライバでサポートされていない場合は、SQLFeatureNotSupportedException
がスローされます。
次の例では、CallableStatement
クラスを持つREF_CURSORからResultSetインスタンスを取得します。
CallableStatement cstmt = conn.prepareCall("{callmySproc(?)}"); cstmt.registerOutParameter(1, Types.REF_CURSOR); cstmt.executeQuery(); ResultSet rs = cstmt.getObject(1, ResultSet.class); while(rs.next()){ System.out.println("Name="+ rs.getString(1)); }
JDBCドライバでREF_CURSORがサポートされているかどうかを確認するには、DatabaseMetaData.supportsRefCursors
メソッドを呼び出します。
java.sql.DriverAction
インタフェースの追加このインタフェースは、DriverManagerクラスによって通知される必要がある場合に、java.sql.Driver
を実装するすべてのクラスが実装する必要があります。 JDBCドライバの静的初期化ブロックは、JDBCドライバが登録解除されたときに、どのDriverAction実装を呼び出すのかをDriverManagerクラスに通知するために、DriverManager.registerDriver(java.sql.Driver, java.sql.DriverAction)
メソッドを呼び出す必要があります。 SecurityManager
が有効になっている場合は、DriverManager.deregisterDriver
メソッドにアクセス権が必要です。
java.sql.SQLType
インタフェースの追加このインタフェースは、JDBCタイプと呼ばれる汎用のSQLタイプまたはベンダー固有のデータ型を識別するオブジェクトを作成する際に使用されます。
java.sql.JDBCType
列挙の追加この列挙は、JDBCタイプと呼ばれる汎用のSQLタイプを識別します。 JDBCType
は、Types.javaで定義された定数の代わりに使用します。
JDBCメソッドは、更新数に対応するint
値のみを返していました。 データベースが拡大し続けると、これによって問題が発生していました。 そのため、更新数に対応するlong
値を返すメソッドがStatement
クラスに追加されました。 これらのメソッドは、返された行数が定数Integer.MAX_VALUE
を超過したときに使用されるべきです。
次のインタフェース用にメソッドが追加または明確化されました。 次のリストには、拡張されたインタフェースを示します。
java.sql.Driver
java.sql.DriverManager
java.sql.DatabaseMetaData
java.sql.Date
java.sql.Time
java.sql.TimeStamp
java.sql.Statement
java.sql.CallableStatement
java.sql.PreparedStatement
java.sql.ResultSet
java.sql.SQLInput
java.sql.SQLOutput
java.sql.Types
javax.sql.DataSource
およびjavax.sql.XADataSource
java.sql.SQLXML
次のリストには、RowSet1.2用に拡張または明確化されたインタフェースおよびクラスを示します。
javax.sql.rowset.BaseRowSet
javax.sql.rowset.CachedRowSet
javax.sql.rowset.Predicate
javax.sql.rowset.JdbcRowSet
javax.sql.rowset.RowSetMetaDataImpl
javax.sql.rowset.spi.SyncFactory
javax.sql.rowset.serial.SerialArray
javax.sql.rowset.serial.SerialBlob
javax.sql.rowset.serial.SerialClob
javax.sql.rowset.serial.SerialDatalink
javax.sql.rowset.serial.SerialJavaObject
javax.sql.rowset.serial.SerialRef
javax.sql.rowset.serial.SerialStruct