DB2eStatement 类

DB2eStatement 类获取和设置特定“语句”属性。 要对“语句”对象使用 DB2eStatement 类方法,“语句”对象首先必须强制转型为 DB2eStatement 对象。这些方法是通过使用适当自变量调用 CLI/ODBC 函数 SQLGetStmtAttr 和 SQLSetStmtAttr 实现的。

com.ibm.db2e.jdbc 包

公用类 DB2eStatement

实现“语句”

表 108 列示 DB2eStatement 类中 DB2 Everyplace 支持的方法。

表 108. DB2eStatement 类方法

方法返回类型 方法
void enableDeletePhysicalRemove(boolean enable) 在 DELETE SQL 语句中,启用或禁用在物理上除去记录,而不考虑它们的脏位值。
void enableDirtyBitSetByApplication(boolean enable) 如果 enable 为 true,则启用应用方式。 否则,启用系统方式。
void enableReadIncludeMarkedDelete (boolean enable) 使逻辑上删除的记录可视或不可视。
void enableReorg (boolean enable) 由 DB2 Everyplace 启用或禁用数据库重组,或由用户使用 REORG SQL 语句显式启用或禁用数据库重组。
boolean isEnabledDeletePhysicalRemove() 删除 SQL 语句将在物理上除去记录而不考虑它们的脏位值吗? 或者仅将记录标记为“删除”?
boolean isEnabledDirtyBitSetByApplication() 数据库系统处于应用方式吗?或者它处于系统方式?
boolean isEnabledReadIncludeMarkedDelete() 可以从 SQL 语句看到逻辑上删除的记录吗?或者这些记录对于 SQL 是不可视的?
boolean isEnabledReorg() 可以由 DB2 Everyplace 执行数据库重组或由用户使用 REORG SQL 语句显式执行数据库重组吗? 或者 REORG SQL 语句受到限制,禁止对用户创建的表自动执行数据库重组?

在这些示例中,st 表示“语句”对象,rs 表示 ResultSet 对象。

要从表 T 物理上除去某些记录,而忽略其脏位的状态:

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

要读取表 T 中设置了脏位的所有记录,包括那些脏位被标记为 DELETE 的记录:

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");  

相关任务

相关参考