数据库(二)

多结果集

在执行存储过程,或者在使用允许在单个查询中提交多个select语句的数据库时,一个查询有可能会返回多个结果集,下面是获取所有结果集的步骤:

  1. 使用execute方法来执行多个SQL语句
  2. 获取第一个结果集或更新计数
  3. 重复调用getMoreResults方法以移动到下一个结果集(这个调用会自动关闭前一个结果集)
  4. 当不存在更多的结果集时,完成操作

如果有多个结果集构成的链中的下一项是结果集,execute和getMoreResults方法将返回true,,如果在链中的下一项不是更新计数,getUpdateCount方法将返回-1

下面的循环将遍历所有的结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
boolean done=false;
boolean isResult=stmt.execute(command);
while(!done){
if(isResult){
ResultSet result=stmt.getResultSet();
so something with result
}else{
int updateCount =stmt.getUpdateCount();
if(updateCount>=0){
do something with updateCount
}else
done=true;
}
isResult=stmt.getMoreResults();
}

获取自动生成键

大多数数据库都支持某种在数据库中对行自动计数的机制。但是,不同的提供商所提供的机制之间存在着很大的差异,这些自动计数的值经常用做主键。jdbc提供了获取自动生成键的有效途径。当我们向数据库插入数据时,可以实现下面的代码来获取这个键

1
2
3
4
5
stmt.executeUpdate(insertStatement,Statement.RETURN_GENERATED_KEYS);
ResultSet rs=stmt.getGeneratedKeys();
if(rs.next()){
int key=rs.getInt(1);
}
Donate comment here