获得ResultSet的总行数和列数方法

本文详细介绍了在Java中利用ResultSet获取数据集总行数与总列数的三种方法:通过getRow方法、循环遍历元素、以及使用SQL语句中的count函数。同时展示了如何通过ResultSetMetaData获取总列数。

在Java中,获得ResultSet的总行数的方法有以下几种。
第一种:利用ResultSet的getRow方法来获得ResultSet的总行数

Java代码
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSetrset=stmt.executeQuery("select*fromyourTableName"); rset.last(); introwCount=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代码
ResultSetrset=stmt.executeQuery("select*fromyourTableName"); introwCount=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代码
ResultSetrset=stmt.executeQuery("selectcount(*)totalCountfromyourTableName"); introwCount=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代码
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSetrset=stmt.executeQuery("select*fromyourtable"); ResultSetMetaDatarsmd=rset.getMetaData(); intcolumnCount=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的总列数。

import java.sql.*; public class GetDBData { public static void main(String[] args) { // TODO Auto-generated method stub Statement stmt = null; Connection conn = null; int lowNumber = 0; try { //1、加载JDBC的本地驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2.创建据库连接(本地ExpressTest库) //2.1、定义据库位置库名称 String DBurl = "jdbc:sqlserver://localhost:1433; DatabaseName=ExpressTest"; //2.2 定义访问据库所需的用户名密码 String user = "sa"; String password = "sa@123"; //2.3 获取据库连接 conn = DriverManager.getConnection(DBurl, user, password); System.out.println("获取连接成功!"); //3.准备据库指令(以静态查询语句为例) //3.1 准备静态SQL语句字符串变量 String sql = "select * from D_ShipList_Main"; //3.2 创建静态SQL语句对象 stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //4. 在据库连接上执行准备好的SQL语句 ResultSet rs = stmt.executeQuery(sql); System.out.println("查询语句执行成功!"); //5. 利用循环操作结果集 //5.1 获取总行方法1:通过循环累加计 int rows = 0; while(rs.next()) { System.out.println(rs.getString("PKID") + "\t; " + rs.getString("SendGoodsCustomerNO") + "\t; " + rs.getString("SendGoodsCustomer") + "\t; " + rs.getString("SendGoodsDate") + "\t; " + rs.getString("SendGoodsAddr")); rows++; } System.out.println("查到 " + rows + "行据。"); //5.2 获取总行方法2:通过移动游标 // rs.last(); // int rowCount = rs.getRow(); // 获取当前行号,即总行 // rs.beforeFirst(); // 将游标重置到初始位置 // System.out.println("Total rows: " + rowCount); //5.3 获取总行方法3:通过count(*),此方法性能最优 // Statement stmtCount = conn.createStatement(); // ResultSet rs1 = stmt.executeQuery("SELECT COUNT(*) AS totalCount FROM D_ShipList_Main"); // int rowCount1 = 0; // if (rs1.next()) { // rowCount1 = rs1.getInt("totalCount"); // } // System.out.println("Total rows: " + rowCount1); // //******使用PreparedStatement对象向据库中新增据行 //新增客户函addCustomer_1() addCustomer_2() // System.out.println("\n*********测试在T_Customer据表中新增记录********"); // String code = "CA001134"; // String name = "张大强"; // String phone= "13901234567"; // String fax = "0531-87654322"; // String address = "山东济南二环东路7300号"; // String postCode = "250000"; // int csType = 2; // //利用动态SQL语句对象向T_Customer表中新增一行据 //// int rv = addCustomer_1(conn, code, name, phone, fax, address, postCode, csType); // //利用储存过程向T_Customer表中新增一行据 // int rv = addCustomer_2(conn, code, name, phone, fax, address, postCode, csType); // if(rv==0) { // System.out.println("新增客户成功!"); // } // else { // System.out.println("新增客户失败!"); // } String cusCode = "CA001134"; int rv1 = delCustomer(conn, cusCode); if(rv1 == 0) { System.out.println("成功:已从T_Customer表中删除客户代码为" + cusCode + "的客户!"); } else { System.out.println("失败:未从T_Customer表中删除客户代码为" + cusCode + "的客户!"); } } catch (ClassNotFoundException | SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static int addCustomer_1(Connection conn, String code, String name, String phone, String fax, String address, String postCode, int csType) { String strSql = "insert into T_Customer(CustomerCode, CustomerName, Phone, CustomerAddress, CustomerType) " + "values(?,?,?,?,?)"; try (PreparedStatement pStmt = conn.prepareStatement(strSql)) { pStmt.setString(1, code); pStmt.setString(2, name); pStmt.setString(3, phone); pStmt.setString(4, address); pStmt.setInt(5, csType); pStmt.executeUpdate(); // System.out.println("为T_Customer表增加记录成功!"); return 0; } catch(SQLException e) { e.printStackTrace(); return -1; } } //利用储存过程向T_Customer表中新增一行据 public static int addCustomer_2(Connection conn, String code, String name, String phone, String fax, String address, String postCode, int csType) { try { CallableStatement csmt = conn.prepareCall("{call USP_addNewCustomer(?,?,?,?,?,?,?)}"); csmt.setString(1, code); csmt.setString(2, name); csmt.setString(3, phone); csmt.setString(4, fax); csmt.setString(5, address); csmt.setString(6, postCode); csmt.setInt(7, csType); csmt.executeUpdate(); return 0; } catch (SQLException e) { e.printStackTrace(); return -1; } } //从T_Customer表中删除一个客户 public static int delCustomer(Connection conn, String code) { String strSql = "delete from T_Customer where CustomerCode like ?"; try (PreparedStatement pStmt = conn.prepareStatement(strSql)) { pStmt.setString(1, code); pStmt.executeUpdate(); return 0; } catch(SQLException e) { e.printStackTrace(); return -1; } } } 在以上代码中完成以下任务: 第一,增加一个方法,在方法中利用PreparedStatement对象,将T_Customer中CustomerCode内容为“Cus00009”的据行CustomerName字段内容修改为“大众日报社济南分社”。 第二,增加一个方法,结果目标与第1个任务一致,但要求利用CallableStatement对象实现; 第三,实现一个方法,查找D_ShipList_Main表中价格最高的运单,列出运单号、发件人姓名、发件日期、收件地址。
最新发布
09-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值