这两天在回来写一些业务代码的时候,发现需要一个需要获得表的记录数,其实可以通过循环获得,不过,那也是实在效率低的可怜。因为之前没有用过,现在用起来,还真是有点小问题,起初使用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是一样的,就不说了。。。
具体的实现方式:只要把连接驱动修改一下,就可以直接运行。我睡觉去了。。
如果要看具体点的可以 点击这里啦...
一、不带参的:
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
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