<% ResultSet rs; rs=test.executeQuery("select count(*) from test"); rs.next(); int a=rs.getInt(1); out.println(a); %> 获取记录总数的源代码如上。输出的a为你想要的结果
我不需要得到所有记录的个数,而是当前记录集中所包含的记录的个数. 我发现使用 rs.last(); int count = rs.getRow(); 可以得到当前记录集的个数, 但对于存储过程返回的记录集就不行,返回错误是TYPE_FORWORD_ONLY 我偏偏就需要从获取存储过程返回来的记录集中记录的个数, ●●●请问该怎么办?●●●我的存储过程很简单: ALTER PROCEDURE dbo.ListUserAlerts ( @uid int = -1 ) AS if (@uid <> -1) SELECT * FROM Alerts WHERE (UID = @uid) else RETURN
用存储过程范围rs..然后 rs.last(); rs.getRow();
使用rs.last()效率极低,尤其条数很多的时候,不建议使用还是使用select count(0) from 要快得多
可以用select count(*) 的sql来查询,然后rs.getRow(1)
如果使用专用的数据库,可以用专用数据库提供的API
ResultSet rs;
rs=test.executeQuery("select count(*) from test");
rs.next();
int a=rs.getInt(1);
out.println(a);
%>
获取记录总数的源代码如上。输出的a为你想要的结果
我发现使用
rs.last();
int count = rs.getRow(); 可以得到当前记录集的个数,
但对于存储过程返回的记录集就不行,返回错误是TYPE_FORWORD_ONLY
我偏偏就需要从获取存储过程返回来的记录集中记录的个数,
●●●请问该怎么办?●●●我的存储过程很简单:
ALTER PROCEDURE dbo.ListUserAlerts
(
@uid int = -1
)
AS
if (@uid <> -1)
SELECT * FROM Alerts WHERE (UID = @uid)
else
RETURN
rs.last();
rs.getRow();