Share via


JDBC Driver の新機能

以下のセクションでは、Microsoft SQL Server JDBC Driver の新機能について説明します。

JDBC Driver Version 3.0 の新機能

Microsoft SQL Server JDBC Driver 3.0 には、いくつかの新機能と機能強化が含まれています。

ドライバー名

新しいバージョンの JDBC ドライバーは Microsoft SQL Server JDBC Driver 3.0 です。

SQL Server 2008 で導入された SQL Server 2008 の日付/時刻データ型のサポート

Microsoft SQL Server JDBC Driver 3.0 は現在、次の SQL Server データ型をサポートしています。

  • time
  • date
  • datetime2
  • datetimeoffset

これらの SQL Server 型の詳細については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。

DateTimeOffset クラス 型に加え、datetimeoffset 列の値にアクセスするための関数が追加されました。

java.sql.Time の値をサーバーに送信する方法の構成

sendTimeAsDatetime 接続プロパティが追加されました。sendTimeAsDatetime は、java.sql.Time 値を SQL Server の time 値または datetime 値としてサーバーに送信する方法を決定します。

sendTimeAsDatetime 接続プロパティの使用については、「接続プロパティの設定」を参照してください。

java.sql.Time 型をサーバーに送信する方法の詳細については、「java.sql.Time の値をサーバーに送信する方法の構成」を参照してください。

sendTimeAsDatetime 接続プロパティの値は、SQLServerDataSource.setSendTimeAsDatetime を使用してプログラムから変更できます。

MERGE 操作の完全サポート

次のメソッドから、MERGE 操作で更新された行の正確な数が返されるようになりました。

日付/時刻型でサポートされない getBytes、setBytes、および updateBytes

Microsoft SQL Server JDBC Driver 2.0 では、SQLServerCallableStatement.getBytesSQLServerCallableStatement.setBytesSQLServerResultSet.getBytes、または SQLServerResultSet.updateBytes を使用して、バイト配列と SQL Server のデータ型である datetimedatetime2、または datetimeoffset との間で値を変換できました。SQL Server JDBC Driver 3.0 では、これらのデータ型に対して、以上に挙げたメソッドを使用すると、変換がサポートされていないことを示す例外が発生します。

日付/時刻オブジェクトを取得可能な getObject

Microsoft SQL Server JDBC Driver 2.0 では、SQLServerCallableStatement.getObject または SQLServerResultSet.getObject を使用して date、time、datetime2、または datetimeoffset 型の値を取得した場合、java.lang.String 型のオブジェクトが返されていました。

この点が、SQL Server JDBC Driver 3.0 では、次のように変更されています。

  • date 型の値は java.sql.Date オブジェクトとして返されます。
  • time 型の値は java.sql.Time オブジェクトとして返されます。
  • datetime2 型の値は java.sql.Timestamp オブジェクトとして返されます。
  • datetimeoffset 型の値は microsoft.sql.DateTimeOffset オブジェクトとして返されます。

列の動作の変更

SQL Server JDBC Driver 3.0 では、一部の列に関して、SQLServerDatabaseMetaData.getColumns から、以前のバージョンのドライバーとは異なる値が返されます。詳細については、SQLServerDatabaseMetaData.getColumns を参照してください。

また、SQLServerResultSetMetaData で、次のメソッドも動作が変更されています。

インターフェイス

次のインターフェイスが追加されています。

詳細については、「ラッパーとインターフェイス」を参照してください。

今後非推奨となるクラス コンストラクター

SQL Server JDBC Driver 3.0 のリリースに合わせて、Microsoft は将来的に、いくつかのクラスのコンストラクターを非推奨としていく意向を発表しました。今後、Microsoft は開発者の方に、これらの型のインスタンスを直接作成しないように呼びかけていくことになります。

当該クラスのコンストラクター非推奨の方針は、SQL Server JDBC Driver 3.0 リリース時点では適用されません。

SQL Server JDBC Driver 3.0 リリースでは、次のクラスに、対応するインターフェイスが存在します。ドライバー固有のメソッドまたは定数にアクセスする必要がある場合は、クラスの代わりにインターフェイスを使用してください。

次のクラスのコンストラクターは今後のリリースでは推奨されず、対応するインターフェイスも存在しません。これは、これらのクラスが SQL Server 固有の関数を公開しないためです。

SQLServerDataSource.getReference でパスワードまたは trustStorePassword が保持される動作を見直し

JDBC Driver 3.0 がリリースされる前は、SQLServerDataSource オブジェクトの SQLServerDataSource.setPassword が呼び出された場合、対応するパスワードが、SQLServerDataSource.getReference から返されるオブジェクトに内包される形で開示され、結果、そのオブジェクトを使用することによって、別の接続を確立することが可能でした。JDBC Driver 3.0 では、SQLServerDataSource.getReference から返されたオブジェクトにパスワードを設定してから、そのオブジェクトとの接続を確立する必要があります。

また、SQLServerDataSource.setTrustStorePassword を設定してから、データ ソースのプロパティをバインドする場合は、SQLServerDataSource.setTrustStorePassword を呼び出してから接続を取得する必要があります。詳細については、「SQLServerDataSource.getReference」を参照してください。

スパース列のサポート

SQL Server JDBC Driver 3.0 では、SQL Server 2008 (以降) のサーバーに接続する場合、スパース列がサポートされます。詳細については、「スパース列」を参照してください。

大きなユーザー定義型 (UDT)

8 KB を超える UDT がサポートされます。詳細については、「ユーザー定義型」を参照してください。

参照

その他のリソース

JDBC Driver の概要