这两天在回来写一些业务代码的时候,发现需要一个需要获得表的记录数,其实可以通过循环获得,不过,那也是实在效率低的可怜。因为之前没有用过,现在用起来,还真是有点小问题,起初使用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
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
GetCountTest9
{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
本文介绍了一种使用Java JDBC API中的Statement对象而非PreparedStatement来高效获取数据库表中记录总数的方法。
3995

被折叠的 条评论
为什么被折叠?



