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