javaresultset
‘壹’ java ResultSet取值
遍历resultSet
while(rs.next())
{
int i =rs.getString("数字的列名");
if(2==i)
{
// 对这行的其他操作
}
}
‘贰’ ResultSet怎么用
在Java中,获得ResultSet的总行数的方法有以下几种。
第一种:利用ResultSet的getRow方法来获得ResultSet的总行数
Java代码
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rset = stmt.executeQuery("select * from yourTableName");
rset.last();
int rowCount = rset.getRow(); //获得ResultSet的总行数
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rset = stmt.executeQuery("select * from yourTableName"); rset.last(); int rowCount = rset.getRow(); //获得ResultSet的总行数第二种:利用循环ResultSet的元素来获得ResultSet的总行数
Java代码
ResultSet rset = stmt.executeQuery("select * from yourTableName");
int rowCount = 0;
while(rset.next()) {
rowCount++;
}
ResultSet rset = stmt.executeQuery("select * from yourTableName"); int rowCount = 0; while(rset.next()) { rowCount++; }rowCount就是ResultSet的总行数。
第三种:利用sql语句中的count函数获得ResultSet的总行数
Java代码
ResultSet rset = stmt.executeQuery("select count(*) totalCount from yourTableName");
int rowCount = 0;
if(rset.next()) {
rowCount=rset .getInt("totalCount ");
}
ResultSet rset = stmt.executeQuery("select count(*) totalCount from yourTableName"); int rowCount = 0; if(rset.next()) { rowCount=rset .getInt("totalCount "); }rowCount就是ResultSet的总行数。
• Java中获得ResultSet的总列数是非常简单事情,因为Java中ResultSet提供了ResultSetMetaData工具类,ResultSetMetaData 是ResultSet的元数据的集合说明。
java获得ResultSet总列数的代码如下:
Java代码
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rset = stmt.executeQuery("select * from yourtable");
ResultSetMetaData rsmd = rset.getMetaData() ;
int columnCount = rsmd.getColumnCount();
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rset = stmt.executeQuery("select * from yourtable"); ResultSetMetaData rsmd = rset.getMetaData() ; int columnCount = rsmd.getColumnCount();columnCount 就是ResultSet的总列数。
‘叁’ java里面 resultset能够作为函数的返回值吗
java里面的ResultSet是可以作为函数的返回值的,这个函数返回一个ResultSet对象,具体示例代码如下:
publicclassDemo{
publicstaticvoidmain(String[]args){
}
privateResultSetgetNum(){//返回值为ResultSet的函数
ResultSetrs=null;
returnrs;
}
}
ResultSet是数据库结果集的数据表,通常通过执行查询数据库的语句生成。
‘肆’ java数据库操作,老是提示ResultSet已关闭
在默认情况下,同一时间每个
Statement
对象在只能打开一个
ResultSet
对象。因此,如果读取一个
ResultSet
对象与读取另一个交叉,则这两个对象必须是由不同的
Statement
对象生成的。如果存在某个语句的打开的当前
ResultSet
对象,则
Statement
接口中的所有执行方法都会隐式关闭它。
你的delRecord方法里,rs开始由executeQuery得到,然后在while循环内,又执行了executeUpdate,所以rs被关闭,在执行rs.isAfterLast()时出现异常。。
rs=sql.executeQuery("select
*
from
message");
while(rs.next()){
if(this.number.equals(rs.getString(1).trim()))
{
sql.executeUpdate("delete
from
message
where
number='"+this.number+"'");
break;
}
}
‘伍’ 使用java,用resultset获取数据库中的结果
ResultSet
是一个迭代模式的动态连接容器。
迭代模式的容器遍历的时候通常是这样的
while(rs.next()){
//循环内容
}
rs.next()返回值是一个boolean,表示在迭代过程中是否已经到结尾。
直接从statement.excuteQuery()获得的rs默认数据游标在起始数据的前一个位置,调用一遍rs.next()才能指向可能有数据的第一条数据。然后遍历继续,直到迭代集合中再无数据rs.next()返回false;
ps:rs.getRow()表达的意思是结果集在当前游标下共存在多少列,不是rs的size()
在循环体中您将可以获得当前整行数据的各个列的值以及其它信息。
‘陆’ java中Result和ResultSet的区别,各有什么优点
二者的区别在于前者对于修改不敏感,而后者对于修改敏感
resultSetConcurency是设置ResultSet对象能够修改的,取值如下:
ResultSet.CONCUR_READ_ONLY 设置为只读类型的参数。
ResultSet.CONCUR_UPDATABLE 设置为可修改类型的参数。
以下两种方法的共性:返回可滚动的结果集,当数据库变化时,当前结果集同步改变。
不可用结果集更新数据库:
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
可用结果集直接更新数据库:
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATETABLE);
‘柒’ 在编写访问数据库的JAVA程序时,ResultSet对象的作用是
ResultSet:完成了查询结果的存储功能,而且只能读去一次,不能够来回的滚动读取。
返回的是一个结果集,可以通过方法next()逐一获取从数据库取到的值
‘捌’ JAVA中Resultset() 方法返回的结果集是什么类型
ResultSet result = stmt.executeQuery("SELECT * FROM message");
while(result.next()) ...{
result.getString(1) ;
result.getString(2) ;
}
是一个查询结果集~