DB2eStatement 类获取和设置特定“语句”属性。 要对“语句”对象使用 DB2eStatement 类方法,“语句”对象首先必须强制转型为 DB2eStatement 对象。这些方法是通过使用适当自变量调用 CLI/ODBC 函数 SQLGetStmtAttr 和 SQLSetStmtAttr 实现的。
com.ibm.db2e.jdbc 包
公用类 DB2eStatement
实现“语句”
表 108 列示 DB2eStatement 类中 DB2 Everyplace 支持的方法。
方法返回类型 | 方法 |
---|---|
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");
相关任务
相关参考