Caché JDBC 準拠
Caché JDBC ドライバは、高性能な タイプ 4 JDBC データベース・ドライバ (Caché 固有のバイナリ・コードも JDBC-ODBC ブリッジもない純正 Java) です。これは、JDBC 4.1 API の仕様に完全に準拠しています。また、必要なインタフェースをすべてサポートし、JDBC 4.1 のすべてのガイドラインおよび要件に従っています。Caché は、SQL の例外処理の強化、各国語文字セット変換、および XML データ型以外のすべての機能をサポートしています。
この章では、JDBC 4.1 API のすべてのクラスとインタフェースをリストし、Caché ドライバから削除されたオプションの機能を示し、Caché 固有の機能をすべて説明します。
以下の項目について説明します。
-
"JDBC 4.1 インタフェースおよびクラス" — JDBC 4.1 実装の主な要件の概要を示します。
-
"JDBC の主要な API (java.sql)" — java.sql パッケージ内の各要素に対する Caché ドライバのサポート・レベルを説明します。
-
"JDBC のオプションのパッケージ API (javax.sql)" — javax.sql パッケージ内の各要素に対する Caché ドライバのサポート・レベルを説明します。
-
"サポートされないオプションのメソッドを含むインタフェース" — Caché ドライバでサポートされないオプションのメソッドの詳細リストを示します。
-
"Caché JDBC の追加と拡張" — 一部のインタフェースで使用可能な追加の Caché 固有のメソッドについて説明します。
JDBC 4.1 インタフェースおよびクラス
このセクションでは、JDBC 4.1 実装の主な要件の概要を示します。ここにリストされないクラスおよび例外は、既に JDBC 4.1 API に完全に実装されています。
以下のインタフェースは完全に実装する必要があります。
| java.sql.DatabaseMetaData | java.sql.ResultSetMetaData | javax.sql.DataSource |
| java.sql.ParameterMetaData | java.sql.Wrapper |
関連情報については、"DatabaseMetaData の各種メソッド" および "CacheDataSource" を参照してください。
以下のインタフェースは実装する必要がありますが、これらのインタフェース内の一部のメソッドは、そのメソッドの実装が DBMS でサポートされない機能に依存する場合、オプションになります。
| java.sql.CallableStatement | java.sql.Driver | java.sql.ResultSet |
| java.sql.Connection | java.sql.PreparedStatement | java.sql.Statement |
詳細は、"サポートされないオプションのメソッドを含むインタフェース" を参照してください。"CallableStatement の追加メソッド" も参照してください。
以下のインタフェースはオプションです。イタリック のインタフェースは、Caché JDBC ドライバではサポートされていません。
| java.sql.Array | java.sql.Savepoint | javax.sql.CommonDataSource |
| java.sql.Blob | java.sql.SQLData | javax.sql.ConnectionEventListener |
| java.sql.Clob | java.sql.SQLInput | javax.sql.ConnectionPoolDataSource |
| java.sql.NClob | java.sql.SQLOutput | javax.sql.PooledConnection |
| java.sql.RowId | java.sql.Struct | javax.sql.StatementEventListener |
| java.sql.Ref | javax.sql.XAConnection | |
| javax.sql.XADataSource |
詳細は、ConnectionPoolDataSource を参照してください。
JDBC の主要な API (java.sql)
このセクションでは、java.sql パッケージ内の各要素に対する Caché JDBC ドライバのサポートについて説明します。
java.sql Interfaces
Caché JDBC ドライバは、java.sql インタフェースに対して以下のサポート・レベルを指定します。
-
Array — サポートされない
-
Blob — すべてのメソッドが完全にサポートされる
-
CallableStatement — 一部のサポートされないオプションのメソッドに Caché 固有の追加メソッドがある
-
Clob — すべてのメソッドが完全にサポートされる
-
Connection — サポートされないオプションのメソッドもある
-
DatabaseMetaData — すべてのメソッドがサポートされるが一部のメソッドには制限がある
-
Driver — サポートされないオプションのメソッドもある
-
NClob — サポートされない
-
ParameterMetaData — すべてのメソッドが完全にサポートされる
-
PreparedStatement — サポートされないオプションのメソッドもある
-
Ref — サポートされない
-
ResultSet — サポートされないオプションのメソッドもある
-
ResultSetMetaData — すべてのメソッドが完全にサポートされる
-
RowId — すべてのメソッドが完全にサポートされる
-
Savepoint — すべてのメソッドが完全にサポートされる
-
SQLData — サポートされない
-
SQLInput — サポートされない
-
SQLOutput — サポートされない
-
SQLXML — サポートされない
-
Statement — サポートされないまたは制限のあるオプションのメソッドもある
-
Struct — サポートされない
-
Wrapper — すべてのメソッドが完全にサポートされる
java.sql Classes
以下の java.sql クラスは、既に JDBC 4.1 API に完全に実装されています。
| ClientInfoStatus | DriverPropertyInfo | Time |
| Date | RowIdLifeTime | Timestamp |
| DriverManager | SQLPermission | Types |
java.sql Exceptions
Caché JDBC ドライバは、以下の例外のみをスローします。
-
BatchUpdateException
-
SQLException
-
SQLWarning
以下の例外は、完全を期すためにここにリストしていますが、必要ではなく、使用することはありません。
| DataTruncation | SQLNonTransientException |
| SQLClientInfoException | SQLRecoverableException |
| SQLDataException | SQLSyntaxErrorException |
| SQLFeatureNotSupportedException | SQLTimeoutException |
| SQLIntegrityConstraintViolationException | SQLTransactionRollbackException |
| SQLInvalidAuthorizationSpecException | SQLTransientConnectionException |
| SQLNonTransientConnectionException | SQLTransientException |
JDBC のオプションのパッケージ API (javax.sql)
このセクションでは、javax.sql パッケージ内の各要素に対する Caché JDBC ドライバのサポートについて説明します。
javax.sql Interfaces
Caché JDBC ドライバは、javax.sql インタフェースに対して以下のサポート・レベルを指定します。
-
CommonDataSource — 実装されない (DataSource を使用)
-
ConnectionEventListener — すべてのメソッドが完全にサポートされる
-
ConnectionPoolDataSource — すべてのメソッドが完全にサポートされ、さらに CacheConnectionPoolDataSource に実装される追加メソッドがある
-
DataSource — すべてのメソッドが完全にサポートされ、さらに CacheDataSource に実装される追加メソッドがある
-
PooledConnection — すべてのメソッドが完全にサポートされる
-
Rowset — サポートされない
-
RowSetInternal — サポートされない
-
RowSetListener — サポートされない
-
RowSetMetaData — サポートされない
-
RowSetReader — サポートされない
-
RowSetWriter — サポートされない
-
StatementEventListener — サポートされない
-
XAConnection — サポートされない
-
XADataSource — サポートされない
javax.sql Classes
以下の javax.sql クラスは、既に JDBC 4.1 API に完全に実装されています。
| ConnectionEvent | RowSetEvent | StatementEvent |
サポートされないオプションのメソッドを含むインタフェース
以下のインタフェースは、Caché JDBC ドライバがサポートしないオプションのメソッドまたは標準以外の方法で実装されているメソッドを含みます。
CallableStatement — サポートされないメソッド
java.sql.CallableStatement は、以下のオプションのメソッドをサポートしません。
-
getArray()
Array getArray(int i) Array getArray(String parameterName) -
getNCharacterStream() および setNCharacterStream()
Reader getNCharacterStream(int parameterIndex) Reader getNCharacterStream(String parameterName) void setNCharacterStream(String parameterName, Reader value) void setNCharacterStream(String parameterName, Reader value, long length) -
getNClob() および setNClob()
java.sql.NClob getNClob(int parameterIndex) java.sql.NClob getNClob(String parameterName) void setNClob(String parameterName, Reader reader) void setNClob(String parameterName, Reader reader, long length) void setNClob(String parameterName, java.sql.NClob value)
-
getNString() および setNString()
String getNString(int parameterIndex) String getNString(String parameterName) void setNString(String parameterName, String value) -
getObject()
Object getObject(int i, java.util.Map map) Object getObject(String parameterName, java.util.Map map) -
getRef()
Ref getRef(int i) Ref getRef(String parameterName) -
getRowId() および setRowId()
java.sql.RowId getRowId(int i) java.sql.RowId getRowId(String parameterName) void setRowId(String parameterName, java.sql.RowId x) -
getURL() および setURL()
java.net.URL getURL(int i) java.net.URL getURL(String parameterName) void setURL(String parameterName, java.net.URL val) -
getSQLXML() および setSQLXML()
java.sql.SQLXML getSQLXML(int parameterIndex) java.sql.SQLXML getSQLXML(String parameterName) void setSQLXML(String parameterName, java.sql.SQLXML xmlObject)
Connection — サポートされないまたは制限のあるメソッド
java.sql.Connection は、以下のオプションのメソッドをサポートしません。
-
abort()
void abort(Executor executor) -
createArrayOf()
java.sql.Array createArrayOf(String typeName, Object[] elements) -
createBlob()
Blob createBlob() -
createClob()
Clob createClob() -
createNClob()
java.sql.NClob createNClob() -
createSQLXML()
java.sql.SQLXML createSQLXML() -
createStruct()
java.sql.Struct createStruct(String typeName, Object[] attributes) -
getNetworkTimeout()
int getNetworkTimeout() -
getTypeMap()
java.util.Map getTypeMap() -
setTypeMap()
void setTypeMap(java.util.Map map) -
setNetworkTimeout()
void setNetworkTimeout(Executor executor, int milliseconds)
以下のオプションの java.sql.Connection メソッドは、制限事項または制約付きで実装されています。
-
prepareCall()
TYPE_FORWARD_ONLY のみが resultSetType でサポートされます。CONCUR_READ_ONLY のみが resultSetConcurrency でサポートされます。
java.sql.CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) -
setReadOnly()
空命令 (Caché ドライバは READ_ONLY モードをサポートしない)
void setReadOnly(Boolean readOnly) -
setCatalog()
空命令 (Caché ドライバはカタログをサポートしない)
void setCatalog(String catalog) -
setTransactionIsolation()
TRANSACTION_READ_COMMITED および TRANSACTION_READ_UNCOMMITED のみが level でサポートされます。
void setTransactionIsolation(int level)
以下の java.sql.Connection メソッドは resultSetHoldability に対して CLOSE_CURSORS_AT_COMMIT をサポートしません。
-
createStatement()
java.sql.Statement createStatement(int resultSetType, int result, int resultSetHoldability) -
getHoldability()
int getHoldability() -
prepareCall()
java.sql.CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) -
prepareStatement()
java.sql.PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) -
setHoldability()
void setHoldability(int holdability)
Caché がサポートする自動生成キーは、現在 0 個または 1 個のみです。以下の java.sql.Connection メソッドが、配列の長さが 1 以外の columnIndexes 配列または columnNames 配列を指定すると、例外がスローされます。
-
prepareStatement()
java.sql.PreparedStatement prepareStatement(String sql, int[] columnIndexes) java.sql.PreparedStatement prepareStatement(String sql, String[] columnNames)
DatabaseMetaData — 各種メソッド
java.sql.DatabaseMetaData は完全にサポートされますが、返り値の処理を Caché 固有の方法で行うために JDBC 標準と異なるメソッドが含まれます。以下のメソッドが影響を受けます。
-
supportsMixedCaseQuotedIdentifiers()
Caché は false を返します。これは JDBC 準拠ではありません。
boolean supportsMixedCaseQuotedIdentifiers() -
getIdentifierQuoteString()
区切り識別子のサポートがオンの場合、Caché は " (二重引用符) を返します。これは、JDBC 準拠のドライバが返す値です。そうでない場合、Caché はスペースを返します。
String getIdentifierQuoteString()
Driver — サポートされないメソッド
java.sql.Driver は、以下のオプションのメソッドをサポートしません。
-
getParentLogger()
void getParentLogger()
PreparedStatement — サポートされないメソッド
java.sql.PreparedStatement は、以下のオプションのメソッドをサポートしません。
-
setArray()
void setArray(int i, Array x) -
setNCharacterStream()
void setNCharacterStream(int parameterIndex, Reader value) void setNCharacterStream(int parameterIndex, Reader value, long length) -
setNClob()
void setNClob(int parameterIndex, Reader reader, long length) void setNClob(int parameterIndex, Reader reader) void setNClob(int parameterIndex, NClob value) -
setNString()
void setNString(int parameterIndex, String value) -
setRef()
void setRef(int i, Ref x) -
setRowId()
void setRowId(int parameterIndex, RowId x) -
setSQLXML()
void setSQLXML(int parameterIndex, SQLXML xmlObject) -
setUnicodeStream()
Java JDK 仕様で廃止されました。
void setUnicodeStream(int i, InputStream x, int length) -
setURL()
void setURL(int i, java.net.URL x)
ResultSet — サポートされないまたは制限のあるメソッド
Caché は、TYPE_SCROLL_SENSITIVE 結果セット・タイプをサポートしません。
以下のメソッドは、制限事項付きで実装されています。
-
setFetchDirection()
ResultSet.FETCH_REVERSE をサポートしません (代わりに、結果セットのカーソルを最後の行に移動する場合は afterLast を使用し、逆方向にスクロールする場合は previous を使用)。
void setFetchDirection(int direction)
java.sql.ResultSet は、以下のオプションのメソッドをサポートしません。
-
getArray()
Array getArray(int i) Array getArray(String colName) -
getCursorName()
String getCursorName() -
getObject()
Object getObject(int i, java.util.Map map) Object getObject(String colName, java.util.Map map) -
getRef()
Ref getRef(int i) Ref getRef(String colName) -
getHoldability()
int getHoldability() -
getNString()
String getNString(int columnIndex) String getNString(String columnLabel) -
getNCharacterStream()
Reader getNCharacterStream(int columnIndex) Reader getNCharacterStream(String columnLabel) -
getUnicodeStream()
Java JDK 仕様で廃止されました。
java.io.InputStream getUnicodeStream(int i) java.io.InputStream getUnicodeStream(String colName) -
getURL()
java.net.URL getURL(int i) java.net.URL getURL(String colName) -
updateArray()
void updateArray(int i, Array x) void updateArray(String colName, Array x) -
updateNString()
void updateNString(int columnIndex, String nString) void updateNString(String columnLabel, String nString) -
updateNCharacterStream()
void updateNCharacterStream(int columnIndex, Reader x) void updateNCharacterStream(int columnIndex, Reader x, long length) void updateNCharacterStream(String columnLabel, Reader reader) void updateNCharacterStream(String columnLabel, Reader reader, long length) -
updateNClob()
void updateNClob(int columnIndex, Reader reader) void updateNClob(int columnIndex, Reader reader, long length) void updateNClob(String columnLabel, Reader reader) void updateNClob(String columnLabel, Reader reader, long length) -
updateRef()
void updateRef(int i, Ref x) void updateRef(String colName, Ref x)
Statement — サポートされないまたは制限のあるメソッド
java.sql.Statement は、以下のオプションのメソッドをサポートしません。
-
cancel()
void cancel() -
closeOnCompletion()
void closeOnCompletion() -
isCloseOnCompletion()
boolean isCloseOnCompletion()
以下のオプションの java.sql.Statement メソッドは、制限事項または制約付きで実装されています。
-
getResultSetHoldability()
HOLD_CURSORS_OVER_COMMIT のみ
int getResultSetHoldability() -
setCursorName()
空命令
void setCursorName(String name) -
setEscapeProcessing()
空命令 (適用されない)
void setEscapeProcessing(Boolean enable) -
setFetchDirection()
ResultSet.FETCH_REVERSE をサポートしません (代わりに、結果セットのカーソルを最後の行に移動する場合は afterLast を使用し、逆方向にスクロールする場合は previous を使用)。
void setFetchDirection(int direction)
Caché がサポートする自動生成キーは、現在 0 個または 1 個のみです。以下の java.sql.Statement メソッドが、配列の長さが 1 以外の columnIndexes 配列または columnNames 配列を指定すると、例外がスローされます。
-
execute()
boolean execute(String sql, int[] columnIndexes) boolean execute(String sql, String[] columnNames) -
executeUpdate()
int executeUpdate(String sql, int[] columnIndexes) int executeUpdate(String sql, String[] columnNames)
Caché JDBC の追加と拡張
以下のインタフェースには、追加の Caché 固有のメソッドがあります。
-
CallableStatement — バイナリ・ストリームを取得する追加メソッドがあります。
-
CacheConnectionPoolDataSource — javax.sql.ConnectionPoolDataSource インタフェースの Caché 固有の実装です。
-
CacheDataSource — javax.sql.DataSource の Caché 固有の実装です。
CallableStatement の追加メソッド
java.sql.CallableStatement には、以下の追加の Caché 限定メソッドがあります。
-
getBinaryStream()
指定されたパラメータの値を java.io.InputStream オブジェクトとして取得します (ここで、i はパラメータのインデックスです)。
java.io.InputStream getBinaryStream(int i)
CacheConnectionPoolDataSource
com.intersys.jdbc.CacheConnectionPoolDataSource クラスは、javax.sql.ConnectionPoolDataSource インタフェースを完全に実装します。このクラスは、Caché JDBC ドライバでサポートされていない javax.sql.CommonDataSource のメソッドを継承しません。
-
getPooledConnection()
javax.sql.PooledConnection getPooledConnection() javax.sql.PooledConnection getPooledConnection(String usr,String pwd)
アプリケーションの呼び出しに getPooledConnection() メソッドまたは PooledConnection クラスを使用しないでください。(CacheDataSource から継承された) getConnection() メソッドを呼び出して、常に Caché ドライバ接続を取得する必要があります。Caché ドライバは、プーリングが返す java.sql.Connection オブジェクトを使用して、このプーリングを透過的に提供します。
CacheConnectionPoolDataSource は、以下の追加の Caché 限定管理メソッドもサポートします。
-
restartConnectionPool()
接続プールを再起動します。物理接続をすべて切断し、接続プールを空にします。
void restartConnectionPool() -
getPoolCount()
接続プール内の現在のエントリ数を返します。
int getPoolCount() -
setMaxPoolSize()
接続プールの最大サイズを設定します。最大サイズが設定されていない場合、既定値として 40 に設定されます。
void setMaxPoolSize(int max) -
getMaxPoolSize()
現在の接続プールの最大サイズを返します。
int getMaxPoolSize()
CacheConnectionPoolDataSource は CacheDataSource から継承されます。この関数は、追加の Caché 固有のメソッドを提供します。
CacheDataSource
com.intersys.jdbc.CacheDataSource クラスは、javax.sql.DataSource インタフェースを完全に実装します。このクラスは、Caché JDBC ドライバでサポートされていない javax.sql.CommonDataSource のメソッドを継承しません。
-
getConnection()
java.sql.Connection getConnection() java.sql.Connection getConnection(String usr,String pwd)
インタフェースによって定義されるメソッドのほかに、このクラスには、DataSource プロパティの取得または設定に使用可能な、いくつかの Cache 固有のメソッドが含まれます。
接続できるようにするには、少なくともサーバ名プロパティおよびデータベース名プロパティを定義する必要があります。これを行うには、対応する setters を使用するか、または有効な URL (Driver クラス経由で接続するときに使用する URL) を指定します。ポート番号はオプションで、既定値として 1972 が設定されます。ユーザ名およびパスワードは、オプションのメソッドを使用して設定するか、または getConnection() メソッドを経由して指定できます。接続パラメータの詳細および完全なリストについては、"JDBC 接続 URL の定義" を参照してください。
以下の Caché 限定管理メソッドを使用できます。
-
getConnectionSecurityLevel()
現在の接続セキュリティ・レベルの設定を表す int を返します。
int getConnectionSecurityLevel() -
getDatabaseName()
現在のデータベース (Caché ネームスペース) の名前を表す文字列を返します。
String getDatabaseName() -
getDataSourceName()
現在のデータ・ソース名を表す文字列を返します。
String getDataSourceName() -
getDefaultTransactionIsolation()
現在の既定のトランザクション分離を取得します。
int getDefaultTransactionIsolation() -
getDescription()
現在の記述を表す文字列を返します。
String getDescription() -
getEventClass()
イベント・クラス・オブジェクトを表す文字列を返します。
String getEventClass() -
getKeyRecoveryPassword()
現在のキー・リカバリ・パスワード設定を表す文字列を返します。
getKeyRecoveryPassword() -
getNodelay()
現在の TCP_NODELAY オプション設定を表すブーリアンを返します。
boolean getNodelay() -
getPassword()
現在のパスワードを表す文字列を返します。
String getPassword() -
getPortNumber()
現在のポート番号を表す int を返します。
int getPortNumber() -
getServerName()
現在のサーバ名を表す文字列を返します。
String getServerName() -
getServicePrincipalName()
現在のサービス・プリンシパル名を表す文字列を返します。
String getServicePrincipalName() -
getSSLConfigurationName()
現在の SSL 構成名の設定を表す文字列を返します。
getSSLConfigurationName() -
getURL()
この CacheDataSource オブジェクトの現在の URL を表す文字列を返します。
String getURL() -
getUser()
現在のユーザ名を表す文字列を返します。
String getUser() -
setConnectionSecurityLevel()
接続のセキュリティ・レベルを設定します。
Sets the Connection Security Level for this DataSource object. -
setDatabaseName()
この CacheDataSource オブジェクトのデータベース名 (Caché ネームスペース) を設定します。
void setDatabaseName(String dn) -
setDataSourceName()
この CacheDataSource オブジェクトのデータ・ソース名を設定します。DataSourceName はオプション設定で、CacheDataSource の接続には使用されません。
void setDataSourceName(String dsn) -
setDefaultTransactionIsolation()
トランザクションの既定の分離レベルを設定します。
void setDefaultTransactionIsolation(int level) -
setDescription()
この CacheDataSource オブジェクトの記述を設定します。Description はオプション設定で、CacheDataSource の接続には使用されません。
void setDescription(String d) -
setEventClass()
この CacheDataSource オブジェクトのイベント・クラスを設定します。このイベント・クラスは Cache JDBC 固有のメカニズムです。この機能は完全にオプションで、ほとんどのアプリケーションで必要ありません。
Caché JDBC サーバは、トランザクションのコミット時およびロールバック時にクラスで実装されているメソッドにディスパッチします。これらのメソッドが実装されているクラスは、“イベント・クラス” と呼ばれます。イベント・クラスがログイン時に指定されると、JDBC サーバは、現在のトランザクションをコミットする直前に %OnTranCommit にディスパッチし、現在のトランザクションをロールバック (中止) する直前に %OnTranRollback にディスパッチします。ユーザ・イベント・クラスは %ServerEvent を拡張する必要があります。このメソッドは、いかなる値も返さず、現在のトランザクションを中止できません。
void setEventClass(String e) -
setKeyRecoveryPassword()
この CacheDataSource オブジェクトのキー・リカバリ・パスワードを設定します。
setKeyRecoveryPassword(java.lang.String password) -
setLogFile()
この CacheDataSource オブジェクトのログ・ファイル名を無条件に設定します。
setLogFile(java.lang.String logFile) -
setNodelay()
この CacheDataSource オブジェクトの TCP_NODELAY オプションを設定します。このフラグを切り替えると、アプリケーションのパフォーマンスに影響する場合があります。設定されていない場合、既定値として true が設定されます。
void setNodelay(boolean nd) -
setPassword()
この CacheDataSource オブジェクトのパスワードを設定します。
void setPassword(String p) -
setPortNumber()
この CacheDataSource オブジェクトのポート番号を設定します。
void setPortNumber(int pn) -
setServerName()
この CacheDataSource オブジェクトのサーバ名を設定します。
void setServerName(String sn) -
setServicePrincipalName()
この CacheDataSource オブジェクトのサービス・プリンシパル名を設定します。
void setServicePrincipalName(String name) -
setSSLConfigurationName()
この CacheDataSource オブジェクトの SSL 構成名を設定します。
setSSLConfigurationName(java.lang.String name) -
setURL()
この CacheDataSource オブジェクトの URL を設定します。
void setURL(String u) -
setUser()
この CacheDataSource オブジェクトのユーザ名を設定します。
void setUser(String u)