获得ResultSet返回记录数

 这两天在回来写一些业务代码的时候,发现需要一个需要获得表的记录数,其实可以通过循环获得,不过,那也是实在效率低的可怜。因为之前没有用过,现在用起来,还真是有点小问题,起初使用JDBC,都是使用 预编译方式PreparedStatement执行SQL语句的,发现rs.last()不能用,那当然rs.getRow()也得不到数据记录数啦。然后问了朋友半天,发现还有个 Statement ,蛮好用的,实现对数据库的一般查询。
      一、不带参的:
      Statement stmt=con.createStatement();
      ResultSet rs=stmt.executeQuery("select * from DBTableName"); 
      以上这种方式是可行的,但是就需要获得记录数来说,这个实现起来恐怕还是有点麻烦,那么就需要来个带参的:Statement stmt = 
      con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
      ResultSet rs=stmt.executeQuery("select * from DBTableName"); 
      这样就能够很轻松的得到一个记录集行数了。
      至于以上取值方式和PreparedStatement是一样的,就不说了。。。
      具体的实现方式:只要把连接驱动修改一下,就可以直接运行。我睡觉去了。。
      如果要看具体点的可以 点击这里啦...
 1 package  sqlpersistent;
 2
 3 import  java.sql.Connection;
 4 import  java.sql.DriverManager;
 5 import  java.sql.ResultSet;
 6 import  java.sql.Statement;
 7
 8 public   class  GetCountTest
 9 {
10     Connection con = null ;
11      public  GetCountTest()  throws  Exception 
12      {
13         Class.forName( " com.microsoft.jdbc.sqlserver.SQLServerDriver " ); // 连接驱动
14         con  =  DriverManager.getConnection( " jdbc:microsoft:sqlserver://localhost:1433;databaseName=[YourDataBaseName] " , " [User] " " [Password] " ); // 连接数据库,此处使用microsoft的    
15     }

16     
17      public   static   int  getUserCount() 
18      {
19         String sql  =   " select * from [YourTableName] "
20          try
21          {
22             Statement stmt  =   new  GetCountTest().con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); // 第一个参数是:游标类型,可以自由的前后滚动;第二个是设置只读            
23             ResultSet rs  =  stmt.executeQuery(sql); // 执行SQL,返回结果集            
24              while  (rs.next())
25              {
26                 rs.last(); // 移动到最后一行
27                  return  rs.getRow(); // 获得当前行号:此处即为最大记录数
28             }
            
29         }

30          catch  (Exception e)
31          {
32             e.printStackTrace();            
33         }

34          return   - 1 ;
35     }

36      public   static   void  main(String[] args)
37      {
38         System.out.println( " 返回的记录数: " + getUserCount());
39     }
    
40 }

41
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值