`

Resultset获取行数和列数

 
阅读更多

在Java中,获得ResultSet的总行数的方法有以下几种。 
第一种:利用ResultSet的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的总行数

 

如上,rowCount的值,就是行数了。如果在获取了行数后,还需要继续使用当前数据集rs,则需要rs.beforeFirst()一次,将游标回到初始位置。

 

第二种:利用循环ResultSet的元素来获得ResultSet的总行数

 

ResultSet rset = stmt.executeQuery("select * from yourTableName");   
int rowCount = 0;   
while(rset.next()) {   
   rowCount++;   
}

 

 rowCount就是ResultSet的总行数。 

第三种:利用sql语句中的count函数获得ResultSet的总行数 

 

ResultSet rset = stmt.executeQuery("select count(*) totalCount from yourTableName");   
int rowCount = 0;   
if(rset.next()) {   
   rowCount=rset .getInt("totalCount ");   
}  

 

rowCount就是ResultSet的总行数。

 

——————Resultset获取列数————

Java中获得ResultSet的总列数是非常简单事情,因为Java中ResultSet提供了ResultSetMetaData工具类,ResultSetMetaData 是ResultSet的元数据的集合说明。

 

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();//ResultSet的总列数

 

 

其他说明:

ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。 

此外,给出Statement创建时的其他说明:
通用格式为:Statement stmt=con.createStatement(int type,int concurrency);我们在访问数据库的时候,在读取返回结果的时候,可能要前后移动指针,比如我们先计算有多少条信息,这是我们就需要把指针移到最后来计算,然后再把指针移到最前面,逐条读取,有时我们只需要逐条读取就可以了。还有就是有只我们只需要读取数据,为了不破坏数据,我们可采用只读模式,有时我们需要望数据库里添加记录,这是我们就要采用可更新数据库的模式。
下面是所有参数的说明:

 

参数 int type
ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。
ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。

 

参数 int concurrency
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。
ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。
此外,当我们使用ResultSet re=stmt.executeQuery(SQL语句)查询后,我们可以使用下列方法获得信息:
public boolean previous() 将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时,返回false。
public void beforeFirst 将游标移动到结果集的初始位置,即在第一行之前。
public void afterLast() 将游标移到结果集最后一行之后。
public void first() 将游标移到结果集的第一行。
public void last() 将游标移到结果集的最后一行。
public boolean isAfterLast() 判断游标是否在最后一行之后。
public boolean isBeforeFirst() 判断游标是否在第一行之前。
public boolean ifFirst() 判断游标是否指向结果集的第一行。
public boolean isLast() 判断游标是否指向结果集的最后一行。
public int getRow() 得到当前游标所指向行的行号,行号从1开始,如果结果集没有行,返回0。
public boolean absolute(int row) 将游标移到参数row指定的行号。如果row取负值,就是倒数的行数,absolute(-1)表示移到最后一行,absolute(-2)表示移到倒数第2行。当移动到第一行前面或最后一行的后面时,该方法返回false。

 

http://blog.sina.com.cn/s/blog_6a70b8b60100yz3d.html
 

分享到:
评论

相关推荐

    支持ResultSet的JTable

    - `int getColumnCount()`:返回表格的列数。 - `Object getValueAt(int row, int column)`:返回指定行和列的值,这将被`JTable`用于绘制单元格。 通过理解以上概念和方法,开发者可以有效地将数据库查询结果展示...

    一个jTable的示例文件.rar

    - getRowCount() 和 getColumnCount():获取行数和列数。 4. **事件监听** - JTable支持各种事件监听,如TableModelListener(数据改变时触发),MouseListener(鼠标操作)和KeyListener(键盘操作)。 5. **...

    JTable的表格模型

    该接口提供了获取行数、列数、列名、单元格值以及设置单元格值的方法。具体的实现类通常继承自`AbstractTableModel`类,该类提供了一些基本方法的默认实现。 #### 二、`AbstractTableModel`类 `AbstractTableModel...

    java笔试题大量

    正确答案取决于具体问题,但例如 `GridLayout` 可以通过指定行数和列数来创建网格布局,而 `BorderLayout` 提供了基于边界的布局方式。 ### 11. Swing 构件使用 正确答案是 `b) javax.swing`,这是因为 Swing 构件...

    XML和PDF生成的资料

    通过`ResultSetMetaData`获取列信息,如列数,并计算行数。接着,创建一个`HSSFWorkbook`实例,这是Excel工作簿的基础。 接下来,定义了两种不同的样式:`cellHeadStyle`用于标题行,`cellDataStyle`用于数据行。...

    java集合应用开发

    // 获取行数 rs.beforeFirst(); // 重置指针到第一行之前 ResultSetMetaData rsmd1 = rs.getMetaData(); int col = rsmd1.getColumnCount(); // 获取列数 Object[][] data = new Object[row][col]; // 创建二维数组...

    Java实现获得MySQL数据库中所有表的记录总数可行方法

    总的来说,通过Java程序实现获取MySQL数据库中所有表的记录总数,主要分为三个步骤:建立数据库连接、获取表名列表、遍历并计算每个表的记录数。这个过程需要合理利用JDBC API,并根据具体需求进行性能优化。

    基于java的图书管理系统源代码.pdf

    `BorderLayout`将窗口分为北、南、东、西、中五个区域,而`GridLayout`则按照指定的行数和列数均匀分布组件。 6. **数据访问对象(DAO)模式**:`DataBaseManager` 类很可能是负责与数据库交互的部分,采用DAO模式...

    java编程excel导入MySQL.pdf

    - 使用 `HSSFSheet.getPhysicalNumberOfRows()` 和 `getRow(i).getPhysicalNumberOfCells()` 分别获取Excel表格的行数和列数。 - `HSSFRow.getCell(j)` 用于获取指定行号的指定列号的单元格,然后通过 `...

    java Swing 设计数据库前台界面

    可以设置表格的列头,行数和列数,以及数据源。JTable还可以与TableModel结合,动态更新数据。 5. **JTable分页**: 分页功能是大型数据集显示的关键,它可以提高用户体验并减少内存消耗。在Java Swing中实现JTable...

    基于java的图书管理系统源代码.doc

    `BorderLayout`用于将组件按照北(North)、南(South)、东(East)、西(West)、中(Center)五个区域进行布局,而`GridLayout`则按照指定的行数和列数均匀分布组件。 8. **ResultSet对象**:`ResultSet`是Java ...

    jdbc资源全套配置

    2. 获取数据:使用`ResultSet`的`getXXX()`方法(如`getString()`, `getInt()`等)获取列值。 五、事务管理 1. 设置自动提交:默认情况下,JDBC连接处于自动提交模式。可以使用`Connection.setAutoCommit(false)`...

    java试题与解答(web部分)

    A(setFetchSize)设置结果集每次获取的行数,C(setMaxRows)限制查询返回的最大行数,B(setMaxFieldSize)限制列的最大长度。这些方法可以帮助减少内存消耗和提高处理速度。 8. ResultSet是一个游标,可以用来...

    JDBC学习文档

    2. **获取元数据**:使用ResultSetMetaData对象获取列信息,如列名、类型等。 3. **获取字段值**:通过`getString()`, `getInt()`, `getObject()`等方法获取字段值,可以自动或手动装箱。 **ResultSetMetaData对象...

    jsp导excel到mysql数据库.pdf

    3. **遍历单元格**:使用`getColumns()`和`getRows()`方法获取工作表的列数和行数。然后遍历每个单元格,例如`Cell cell = rs.getCell(j, i);`获取第`j`列第`i`行的单元格内容。 4. **数据处理与验证**:在遍历过程...

    android jbdc教程

    1. ResultSet对象提供了一系列方法来获取和处理查询结果,如next()移动到下一个结果,getString()、getInt()等获取指定列的数据。 2. 对于插入或更新操作,需要准备合适的参数化SQL语句,并用setXXX()方法设置值。 ...

    java分页(三种数据库)

    这里MySQL的`LIMIT`子句接收两个参数,第一个是偏移量(即跳过的行数),第二个是每页的记录数。 三、Oracle的Java分页 Oracle数据库没有内置的分页语法,但可以通过ROWNUM伪列配合子查询来实现。例如: ```java ...

    jdbc 编程实例

    `ResultSetMetaData`对象提供了关于结果集列的元信息,如列数、列名和数据类型,可用于动态生成Java对象。 5. **CallableStatement** 当需要执行存储过程时,可以使用`CallableStatement`。它类似于`...

    java Oracle存储过程分页整理

    在Oracle中,可以通过游标(Cursor)和ROWNUM伪列来实现分页。ROWNUM是在查询过程中为每行生成的唯一数字,我们可以利用它来限制返回的行数。 在Java中,我们通常使用JDBC(Java Database Connectivity)API来与...

Global site tag (gtag.js) - Google Analytics