全面解析JDBC
时间:2007-10-22 来源:不详 作者:林子
当getMoreResults返回false时,它表示该SQL语句返回一个更新计数或没有其它结果。因此需要调用方法getUpdateCount来检查它是哪一种情况。在这种情况下,当下列条件为真时表示没有其它结果:
((stmt.getMoreResults()==false)&&(stmt.getUpdateCount()==-1))
下面的代码演示了一种方法用来确认已访问调用方法execute所产生的全部结果集和更新计数:
stmt.execute(queryStringWithUnknownResults);
while(true){
introwCount=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;//没有其它结果
如何获得SQL语句的执行结果?
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。ResultSet.next方法用于移动到ResultSet中的下一行,使下一行成为当前行。
下面的代码段是执行SQL语句的示例。该SQL语句将返回行集合,其中列1为int,列2猄tring,而列3则为字节数组:
Java.sql.Statementstmt=conn.createStatement();
ResultSet r=stmt.executeQuery("SELECT a,b,c FROM Table1");
while(r.next()){
//打印当前行的值。
Int i=r.getInt("a");
String s=r.getString("b");
Float f=r.getFloat("c");
System.out.println("ROW=" i " " s " " f);
}
1. 行和光标
ResultSet维护指向其当前数据行的光标。每调用一次next方法,光标向下移动一行。
最初它位于第一行之前,因此第一次调用next将把光标置于第一行上,使它成为当前行。随着每次调用next导致光标向下移动一行,按照从上至下的次序获取ResultSet行。
文章评论
共有位Admini5网友发表了评论 查看完整内容