DB2eStatement クラス

DB2eStatement クラスは、特定の Statement 属性を取得し、設定します。 Statement オブジェクトで DB2eStatement クラス・メソッドを使用するためには、まず Statement オブジェクトが DB2eStatement オブジェクトにキャストされていなければなりません。これらのメソッドは、CLI/ODBC 関数である SQLGetStmtAttr および SQLSetStmtAttr を、適切な引き数を 指定して呼び出すことによりインプリメントされます。

com.ibm.db2e.jdbc パッケージ

共通クラス DB2eStatement

Statement のインプリメント

表 108は、DB2 Everyplace がサポートする DB2eStatement クラスの メソッドをリストしたものです。

表 108. DB2eStatement クラス・メソッド

メソッドの戻りタイプ メソッド
void enableDeletePhysicalRemove(boolean enable) DELETE SQL ステートメントで、レコードの ダーティー・ビット値にかかわらず、レコードの物理的な除去を使用可能または使用不可にする。
void enableDirtyBitSetByApplication(boolean enable) 使用可能が真であれば、アプリケーション・モードを 使用可能にする。それ以外の場合は、システム・モードを使用可能にする。
void enableReadIncludeMarkedDelete (boolean enable) 論理的に削除されたレコードを、可視あるいは 不可視にする。
void enableReorg (boolean enable) DB2 Everyplace または ユーザーの明示的な REORG SQL ステートメント によるデータベース再編成を使用可能または使用不可にする。
boolean isEnabledDeletePhysicalRemove() delete SQL ステートメントが、レコードのダーティー・ビット値にかかわらず、 レコードを物理的に除去するか? あるいは、レコードに「削除」とマークするのみとするか?
boolean isEnabledDirtyBitSetByApplication() データベース・システムはアプリケーション・モードであるか? あるいは、 システム・モードであるか?
boolean isEnabledReadIncludeMarkedDelete() 論理的に削除されたレコードは SQL ステートメントから可視であるか? あるいは、 これらのレコードは SQL からは不可視であるか?
boolean isEnabledReorg() データベース再編成を DB2 Everyplace またはユーザーの明示的な REORG SQL ステートメント によって行えるか? あるいは、REORG SQL ステートメントに制限があり、ユーザーが作成した表の 自動データベース再編成が使用不可であるか?

以下の例で、st は Statement オブジェクトを、 rs は ResultSet オブジェクトを表します。

ダーティー・ビットの状況を無視してレコードを表 T から物理的に除去するには、 次のようにします。

DB2eStatement db2e_st = (DB2eStatement) st;
db2e_st.enableDeletePhysicalRemove(true);
st.executeUpdate("DELETE FROM T WHERE X<>0");   

ダーティー・ビットが DELETE とマークされたレコードを含め、 ダーティー・ビットが設定されている表 T のすべてのレコードを読み取るには、次のようにします。

DB2eStatement db2e_st = (DB2eStatement) st;
db2e_st.enableReadIncludeMarkedDelete(true);
rs = st.executeQuery("SELECT * FROM T WHERE $dirty<>0");   

表 T のレコードのダーティー・ビットをクリーンにするには、次のようにします。

DB2eStatement db2e_st = (DB2eStatement) st;
db2e_st.enableDirtyBitSetByApplication(true);
st.executeUpdate("UPDATE T SET $dirty=0 WHERE $dirty>0");  

関連したタスク

関連した解説