当 SQL 语句的结果不是结果集时,则方法 getResultSet 将返回 null 。这可能意味着结果是一个更新计数或没有其它结果 。在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数 。这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果 。如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果 。也就是说,当下列条件为真时表示没有结果(或没有其它结果):
((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))
如果已经调用方法 getResultSet 并处理了它返回的 ResultSet 对象,则有必要调用方法 getMoreResults 以确定是否有其它结果集或更新计数 。如果 getMoreResults 返回 true,则需要再次调用 getResultSet 来检索下一个结果集 。如上所述,如果 getResultSet 返回 null,则需要调用 getUpdateCount 来检查 null 是表示结果为更新计数还是表示没有其它结果 。
当 getMoreResults 返回 false 时,它表示该 SQL 语句返回一个更新计数或没有其它结果 。因此需要调用方法 getUpdateCount 来检查它是哪一种情况 。在这种情况下,当下列条件为真时表示没有其它结果:
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
下面的代码演示了一种方法用来确认已访问调用方法 execute 所产生的全部结果集和更新计数:
stmt.execute(queryStringWithUnknownResults);
while (true) {
int rowCount = stmt.getUpdateCount();
if (rowCount > 0) { // 它是更新计数
System.out.println(“Rows changed = ”count);
stmt.getMoreResults();
continue;
}
if (rowCount == 0) { // DDL 命令或 0 个更新
System.out.println(” No rows changed or statement was DDL
command”);
stmt.getMoreResults();
continue;
}
// 执行到这里,证明有一个结果集
// 或没有其它结果
ResultSet rs = stmt.getResultSet;
if (rs != null) {
. . . // 使用元数据获得关于结果集列的信息
while (rs.next()) {
. . . // 处理结果
stmt.getMoreResults();
continue;
}
break; // 没有其它结果
推荐阅读
- 行车记录仪用法攻略 包黑子行车记录仪使用说明查看录像
- 珠心算的各种算法大揭秘 珠心算算盘的用法图解
- 数据库管理工具哪个好?数据库管理工具盘点
- 龙血树有什么作用与药用价值 具体的功效与用法
- Python中legend是什么意思?Python中legend的用法是什么
- Python中scatter是什么意思?Python中scatter函数用法是什么
- Python中plot函数参数怎么用?Python中plot里的参数用法是什么
- 常见的咖啡器具都有哪些 咖啡壶种类及用法的详细介绍
- 茶麸在池塘养鱼中的作用及用法
- 钓鱼拉丝粉和拉大球有什么区别 拉丝粉的正确用法