JavaTM 2 Platform
Std. Ed. v1.3

java.sql
インタフェース Statement

既知のサブインタフェースの一覧:
CallableStatement, PreparedStatement

public interface Statement

静的 SQL 文を実行し、作成された結果を得るために使用されるオブジェクトです。

Statement オブジェクトごとに 1 つの ResultSet だけがいつでもオープンできます。したがって、1 つの ResultSet オブジェクトの読み込みが、別の読み込みにより割り込まれると、各々は異なった Statement オブジェクトによって生成されたことになります。すべての文の execute メソッドは、文の現在の ResultSet オブジェクトでオープンされているものが存在すれば、それを暗黙にクローズします。

関連項目:
Connection.createStatement(), ResultSet

メソッドの概要
 void addBatch(String sql)
          この Statement オブジェクトの現在のコマンドのバッチに SQL コマンドを追加します。
 void cancel()
          DBMS およびドライバの両方が SQL 文の終了をサポートする場合に、この Statement オブジェクトを取り消します。
 void clearBatch()
          現在のバッチのコマンドのセットを空にします。
 void clearWarnings()
          この Statement オブジェクトに関して報告されたすべての警告をクリアします。
 void close()
          自動的にクローズされるときに Statement オブジェクトのデータベースと JDBC リソースが解放されるのを待つのではなく、ただちにそれらを解放します。
 boolean execute(String sql)
          複数の結果を返す可能性のある SQL 文を実行します。
 int[] executeBatch()
          コマンドのバッチをデータベースに送信して実行し、すべてのコマンドが正常に実行されると、更新カウントの配列を返します。
 ResultSet executeQuery(String sql)
          単一の ResultSet オブジェクトを返す SQL 文を実行します。
 int executeUpdate(String sql)
          SQL INSERT 文、UPDATE 文、または DELETE 文を実行します。
 Connection getConnection()
          この Statement オブジェクトを生成した Connection オブジェクトを返します。
 int getFetchDirection()
          この Statement オブジェクトから生成された結果セットのデフォルトである、データベーステーブルから行をフェッチする方向を取得します。
 int getFetchSize()
          この Statement オブジェクトから生成された結果セットのデフォルトのフェッチサイズである、結果セットの行数を取得します。
 int getMaxFieldSize()
          任意の列値で許可される最大バイト数を返します。
 int getMaxRows()
          ResultSet オブジェクトが含むことのできる最大の行数を取得します。
 boolean getMoreResults()
          Statement オブジェクトの次の結果に移動します。
 int getQueryTimeout()
          ドライバが Statement オブジェクトの実行を待つ秒数を取得します。
 ResultSet getResultSet()
          ResultSet オブジェクトとして現在の結果を返します。
 int getResultSetConcurrency()
          この Statement オブジェクトから生成された ResultSet オブジェクトの結果セットの並行性を取得します。
 int getResultSetType()
          この Statement オブジェクトから生成された ResultSet オブジェクトの結果セットのタイプを取得します。
 int getUpdateCount()
          更新カウントとして現在の結果を返します。
 SQLWarning getWarnings()
          この Statement オブジェクトに関する呼び出しによって報告される最初の警告を取得します。
 void setCursorName(String name)
          後続の Statement オブジェクトの execute メソッドによって使用される SQL カーソル名を定義します。
 void setEscapeProcessing(boolean enable)
          エスケープの処理をオンまたはオフに設定します。
 void setFetchDirection(int direction)
          結果セットの行が処理される方向についてのヒントをドライバに提供します。
 void setFetchSize(int rows)
          より多くの行が必要なときに、データベースから取り出す必要がある行数についてのヒントを JDBC ドライバに提供します。
 void setMaxFieldSize(int max)
          列の最大バイト数の制限値を、指定されたバイト数に設定します。
 void setMaxRows(int max)
          任意の ResultSet オブジェクトが含むことのできる最大行数の制限値を、指定された数に設定します。
 void setQueryTimeout(int seconds)
          ドライバが Statement オブジェクトの実行を待つ秒数を、指定された秒数に設定します。
 

メソッドの詳細

executeQuery

public ResultSet executeQuery(String sql)
                       throws SQLException
単一の ResultSet オブジェクトを返す SQL 文を実行します。
パラメータ:
sql - 通常静的 SQL SELECT
戻り値:
指定されたクエリーによって作成されたデータを含む ResultSet オブジェクト。null にはならない
例外:
SQLException - データベースアクセスエラーが発生した場合

executeUpdate

public int executeUpdate(String sql)
                  throws SQLException
SQL INSERT 文、UPDATE 文、または DELETE 文を実行します。さらに、SQL DDL 文のような何も返さない SQL 文も実行できます。
パラメータ:
sql - SQL INSERT 文、UPDATE 文、または DELETE 文、あるいは何も返さない SQL 文
戻り値:
INSERT 文、UPDATE 文、DELETE 文の場合は行数。何も返さない SQL 文の場合は 0
例外:
SQLException - データベースアクセスエラーが発生した場合

close

public void close()
           throws SQLException
自動的にクローズされるときに Statement オブジェクトのデータベースと JDBC リソースが解放されるのを待つのではなく、ただちにそれらを解放します。データベースのリソースを占有するのを避けるために、通常は、作業が終了したらすぐにリソースを解放するようにしてください。

注: Statement オブジェクトは、ガベージコレクトされるときは自動的にクローズされます。Statement オブジェクトがクローズされるとき、その現在の ResultSet オブジェクトが存在すれば、それもクローズされます。

例外:
SQLException - データベースアクセスエラーが発生した場合

getMaxFieldSize

public int getMaxFieldSize()
                    throws SQLException
任意の列値で許可される最大バイト数を返します。この制限値は、任意の列値に対し返すことができる最大のバイト数です。この制限値は、BINARYVARBINARYLONGVARBINARYCHARVARCHAR、および LONGVARCHAR の各列にだけ適用されます。制限値を超えたデータは通知なしに破棄されます。
戻り値:
現在の最大列サイズの制限値。ゼロは無制限を意味する
例外:
SQLException - データベースアクセスエラーが発生した場合

setMaxFieldSize

public void setMaxFieldSize(int max)
                     throws SQLException
列の最大バイト数の制限値を、指定されたバイト数に設定します。これは、任意の列値に対して返すことのできる最大のバイト数です。この制限値は、BINARYVARBINARYLONGVARBINARYCHARVARCHARLONGVARCHAR の各フィールドだけに適用されます。制限値を超えたデータは通知なしに破棄されます。移植性を最大限にするには、256 より大きい値を使用します。
パラメータ:
max - 新しい最大列サイズの制限値。ゼロは無制限を意味する
例外:
SQLException - データベースアクセスエラーが発生した場合

getMaxRows

public int getMaxRows()
               throws SQLException
ResultSet オブジェクトが含むことのできる最大の行数を取得します。制限値を超えた行は通知なしに除外されます。
戻り値:
現在の最大行数の制限値。ゼロは無制限を意味する
例外:
SQLException - データベースアクセスエラーが発生した場合

setMaxRows

public void setMaxRows(int max)
                throws SQLException
任意の ResultSet オブジェクトが含むことのできる最大行数の制限値を、指定された数に設定します。制限値を超えた行は通知なしに除外されます。
パラメータ:
max - 新しい最大行数の制限値。ゼロは無制限を意味する
例外:
SQLException - データベースアクセスエラーが発生した場合

setEscapeProcessing

public void setEscapeProcessing(boolean enable)
                         throws SQLException
エスケープの処理をオンまたはオフに設定します。エスケープスキャンニングがオンの場合 (デフォルト)、ドライバは SQL をデータベースに送る前にエスケープ置き換えを実行します。 注: 用意された文は、通常呼び出す前に構文解析されているので、用意された文に対しエスケープ処理を無効にしても効果はありません。
パラメータ:
enable - 有効にする場合は true、無効にする場合は false
例外:
SQLException - データベースアクセスエラーが発生した場合

getQueryTimeout

public int getQueryTimeout()
                    throws SQLException
ドライバが Statement オブジェクトの実行を待つ秒数を取得します。この時間を経過すると、SQLException がスローされます。
戻り値:
現在のクエリータイムアウトの制限値の秒数。ゼロは無制限を意味する
例外:
SQLException - データベースアクセスエラーが発生した場合

setQueryTimeout

public void setQueryTimeout(int seconds)
                     throws SQLException
ドライバが Statement オブジェクトの実行を待つ秒数を、指定された秒数に設定します。この時間を経過すると、SQLException がスローされます。
パラメータ:
seconds - 新しいクエリータイムアウトの制限値の秒数。ゼロは無制限を意味する
例外:
SQLException - データベースアクセスエラーが発生した場合

cancel

public void cancel()
            throws SQLException
DBMS およびドライバの両方が SQL 文の終了をサポートする場合に、この Statement オブジェクトを取り消します。このメソッドは、1 つのスレッドが別のスレッドによって実行中の文を取り消すのに使用できます。
例外:
SQLException - データベースアクセスエラーが発生した場合

getWarnings

public SQLWarning getWarnings()
                       throws SQLException
この Statement オブジェクトに関する呼び出しによって報告される最初の警告を取得します。後続の Statement オブジェクトの警告は、この SQLWarning オブジェクトにチェーンされます。

警告チェーンは、文が (再) 実行されるたびに自動的にクリアされます。

注: ResultSet オブジェクトを処理中の場合、ResultSet オブジェクトの読み込みに関連する警告はすべてそのオブジェクトにチェーンされます。

戻り値:
SQLWarning オブジェクトまたは null
例外:
SQLException - データベースアクセスエラーが発生した場合

clearWarnings

public void clearWarnings()
                   throws SQLException
この Statement オブジェクトに関して報告されたすべての警告をクリアします。このメソッドの呼び出しのあと、この Statement オブジェクトに対する新しい警告が通知されるまで、getWarnings メソッドは null を返します。
例外:
SQLException - データベースアクセスエラーが発生した場合

setCursorName

public void setCursorName(String name)
                   throws SQLException
後続の Statement オブジェクトの execute メソッドによって使用される SQL カーソル名を定義します。この名前は、SQL で位置決めされた更新文または削除文で使用され、この文で生成された ResultSet オブジェクト内の現在の行を識別できます。データベースが位置決めされた更新または削除をサポートしていない場合、このメソッドは何も実行しません。カーソルが更新をサポートする適切な遮断レベルを持つことが保証されるためには、カーソルの SELECT 文は「select for update ...」という形式である必要があります。「for update」の句が省略されている場合、位置決めされた更新は失敗します。

注: 定義により、位置決めされた更新または削除の実行は、位置決めに使用中の ResultSet オブジェクトを生成した Statement オブジェクトとは異なる Statement オブジェクトによって実行される必要があります。さらに、カーソル名は接続内で一意にする必要があります。

パラメータ:
name - 新しいカーソル名。接続内で一意にする必要がある
例外:
SQLException - データベースアクセスエラーが発生した場合

execute

public boolean execute(String sql)
                throws SQLException
複数の結果を返す可能性のある SQL 文を実行します。いくつかの (普通でない) 状況では、単一の SQL 文が複数の結果セットあるいは更新カウントを返すことがあります。複数の結果を返すことがあることがわかっているストアドプロシージャを実行中、または未知の SQL 文字列を動的に実行中でない限り、通常はこれを無視できます。executegetMoreResultsgetResultSet、および getUpdateCount メソッドによって複数の結果をナビゲートできます。 execute メソッドは、SQL 文を実行し最初の結果の形式を示します。次に、getResultSet または getUpdateCount メソッドを使用して結果を取得します。そして、getMoreResults により引き続き任意の結果の取得 (複数可) に移動します。
パラメータ:
sql - 任意の SQL 文
戻り値:
次の結果が ResultSet オブジェクトの場合は true。更新カウントであるか、または結果がない場合は false
例外:
SQLException - データベースアクセスエラーが発生した場合
関連項目:
getResultSet(), getUpdateCount(), getMoreResults()

getResultSet

public ResultSet getResultSet()
                       throws SQLException
ResultSet オブジェクトとして現在の結果を返します。このメソッドは、1 つの結果につき 1 回だけ呼び出さなければなりません。
戻り値:
ResultSet オブジェクトとしての現在の結果。更新カウントであるか、または結果がない場合は null
例外:
SQLException - データベースアクセスエラーが発生した場合
関連項目:
execute(java.lang.String)

getUpdateCount

public int getUpdateCount()
                   throws SQLException
更新カウントとして現在の結果を返します。結果が ResultSet オブジェクトであるか、または結果がない場合は -1 を返します。このメソッドは、1 つの結果につき 1 回だけ呼び出す必要があります。
戻り値:
更新カウントしての現在の結果。現在の結果が ResultSet オブジェクトであるか、または結果がない場合は -1
例外:
SQLException - データベースアクセスエラーが発生した場合
関連項目:
execute(java.lang.String)

getMoreResults

public boolean getMoreResults()
                       throws SQLException
Statement オブジェクトの次の結果に移動します。この結果が ResultSet オブジェクトの場合は true を返します。このメソッドは、getResultSet メソッドで得られた現在の ResultSet オブジェクトをすべて暗黙にクローズします。

次に該当する場合、結果はありません。

      (!getMoreResults() && (getUpdateCount() == -1)
 
戻り値:
次の結果が ResultSet オブジェクトの場合は true。更新カウントであるか、または結果がない場合は false
例外:
SQLException - データベースアクセスエラーが発生した場合
関連項目:
execute(java.lang.String)

setFetchDirection

public void setFetchDirection(int direction)
                       throws SQLException
結果セットの行が処理される方向についてのヒントをドライバに提供します。ヒントは、この Statement オブジェクトを使用して作成された結果セットにだけ適用されます。デフォルト値は ResultSet.FETCH_FORWARD です。

このメソッドは、この Statement オブジェクトによって生成される結果セットのデフォルトのフェッチ方向を設定します。各結果セットは、それ自身のフェッチ方向を取得および設定するための独自のメソッドを持ちます。

パラメータ:
direction - 行を処理する初期方向
例外:
SQLException - データベースアクセスエラーが発生した場合、または指定された方向が ResultSet.FETCH_FORWARDResultSet.FETCH_REVERSE、または ResultSet.FETCH_UNKNOWN のどれでもない場合
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

getFetchDirection

public int getFetchDirection()
                      throws SQLException
この Statement オブジェクトから生成された結果セットのデフォルトである、データベーステーブルから行をフェッチする方向を取得します。この Statement オブジェクトが setFetchDirection メソッドを呼び出してフェッチ方向を設定していない場合、戻り値は実装に依存します。
戻り値:
この Statement オブジェクトから生成された結果セットのデフォルトのフェッチ方向
例外:
SQLException - データベースアクセスエラーが発生した場合
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

setFetchSize

public void setFetchSize(int rows)
                  throws SQLException
より多くの行が必要なときに、データベースから取り出す必要がある行数についてのヒントを JDBC ドライバに提供します。指定された行数は、この Statement を使って作成された結果セットにだけ影響します。指定された値が 0 の場合、ヒントは無視されます。デフォルト値は 0 です。
パラメータ:
rows - フェッチする行数
例外:
SQLException - データベースアクセスエラーが発生した場合、または条件 0 <= rows <= this.getMaxRows() が満たされない場合
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

getFetchSize

public int getFetchSize()
                 throws SQLException
この Statement オブジェクトから生成された結果セットのデフォルトのフェッチサイズである、結果セットの行数を取得します。この Statement オブジェクトが setFetchSize メソッドを呼び出してフェッチサイズを設定していない場合、戻り値は実装に依存します。
戻り値:
この Statement オブジェクトから生成された結果セットのデフォルトのフェッチサイズ
例外:
SQLException - データベースアクセスエラーが発生した場合
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

getResultSetConcurrency

public int getResultSetConcurrency()
                            throws SQLException
この Statement オブジェクトから生成された ResultSet オブジェクトの結果セットの並行性を取得します。
戻り値:
ResultSet.CONCUR_READ_ONLY または ResultSet.CONCUR_UPDATABLE
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

getResultSetType

public int getResultSetType()
                     throws SQLException
この Statement オブジェクトから生成された ResultSet オブジェクトの結果セットのタイプを取得します。
戻り値:
ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVE、または ResultSet.TYPE_SCROLL_SENSITIVE のうちの 1 つ
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

addBatch

public void addBatch(String sql)
              throws SQLException
この Statement オブジェクトの現在のコマンドのバッチに SQL コマンドを追加します。このメソッドはオプションです。
パラメータ:
sql - 通常静的 SQL INSERT 文、または UPDATE
例外:
SQLException - データベースアクセスエラーが発生した場合、またはドライバがバッチ文をサポートしていない場合
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

clearBatch

public void clearBatch()
                throws SQLException
現在のバッチのコマンドのセットを空にします。このメソッドはオプションです。
例外:
SQLException - データベースアクセスエラーが発生した場合、またはドライバがバッチ文をサポートしていない場合
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

executeBatch

public int[] executeBatch()
                   throws SQLException
コマンドのバッチをデータベースに送信して実行し、すべてのコマンドが正常に実行されると、更新カウントの配列を返します。返される配列の int 要素は、バッチ内のコマンドに対応して返され順序付けられます。つまり、バッチに追加された順序に従って順序付けられます。メソッド executeBatch によって返される配列内の要素は、次のどれか 1 つに該当します。
  1. ゼロ以上の数値 -- コマンドが正常に処理されたことを示し、コマンドの実行によって影響を受けたデータベース内の行数を指定する更新カウント
  2. -2 の値 -- コマンドが正常に処理されたが、影響を受けた行数が不明なことを示す

    バッチ更新内のコマンドの 1 つが正常に実行できなかった場合、このメソッドは BatchUpdateException をスローし、JDBC ドライバはバッチ内の残りのコマンドの処理を継続することも、中止することもできます。ただし、ドライバの動作は特定の DBMS と一貫性を保つ必要があり、常にコマンドの処理を継続するか、あるいは継続しないかのどちらかになります。失敗後、ドライバが処理を継続する場合は、BatchUpdateException.getUpdateCounts メソッドで返される配列には、バッチ内のコマンドと同じ数の要素が格納され、それらの要素の 1 つ以上が次に該当します。

  3. -3 の値 -- 失敗したコマンドが正常に実行されたことを示し、コマンドが失敗したあとに、ドライバがコマンドの処理を継続した場合に限り発生する

ドライバはこのメソッドを実装する必要はありません。Java 2 SDK, Standard Edition バージョン 1.3 では、使用できる実装および戻り値が修正されて、BatchUpdateException オブジェクトがスローされたあとにバッチ更新内のコマンドの処理を継続できるオプションが用意されています。

戻り値:
バッチ内のコマンドごとに 1 つの要素が格納されている更新カウントの配列。配列の要素はコマンドがバッチに追加された順序で並べられる
例外:
SQLException - データベースアクセスエラーが発生した場合、またはドライバがバッチ文をサポートしない場合。データベースに送信されたコマンドの 1 つが正常に実行されなかった場合や、結果セットを返そうとすると BatchUpdateException (SQLException のサブクラス) がスローされる
導入されたバージョン:
1.3
関連項目:
「JDBC 2.0 API に含まれるもの」

getConnection

public Connection getConnection()
                         throws SQLException
この Statement オブジェクトを生成した Connection オブジェクトを返します。
戻り値:
この文を生成した接続
例外:
SQLException - データベースアクセスエラーが発生した場合
導入されたバージョン:
1.2
関連項目:
「JDBC 2.0 API に含まれるもの」

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.