获取结果集值的计数[重复]
Posted
技术标签:
【中文标题】获取结果集值的计数[重复]【英文标题】:Getting the count of the resultset values [duplicate] 【发布时间】:2014-10-17 17:44:19 【问题描述】:我需要你的助手帮助我计算resultset
中可用值的数量。 resultset
有 22 条记录,在下面的代码中,它打印从 1 到 23 的计数。有什么方法可以得到总数。记录为 22(仅一个值)还是从第一个值中减去最后一个值?
我的代码如下:
while (rs.next())
count=0;
name1=rs.getString("name");
out.println(rs.getRow());
我尝试使用rs.first()
和rs.last()
并产生以下错误:
java.sql.SQLException:仅转发结果集的操作无效: 首先
我尝试将参数添加到createstatement
,但存在相同的异常:
conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE, rs.CONCUR_READ_ONLY);
java.sql.SQLException:仅转发结果集的操作无效: 最后
请帮助我解决上述问题。
【问题讨论】:
已经有一个功能了。 rs.getRow()。我不确定,但类似。 这有帮助吗? ***.com/questions/7886462/… 【参考方案1】:你可以使用 mysql 的count(*)
try
Statement stmt = connection.createStatement();
String selectquery = "select count(*) from YourTable";
ResultSet rs = stmt.executeQuery(selectquery);
rs.next();
System.out.println("Amount of rows :" + rs.getInt(1));
如果您想根据“名称”计算行数,那么
try
Statement stmt = connection.createStatement();
String selectquery = "select count(name) from YourTable";
ResultSet rs = stmt.executeQuery(selectquery);
rs.next();
System.out.println("Amount of rows :" + rs.getInt(1));
【讨论】:
我试图不更改查询,因为它是一个包含 10 多个字段的复杂查询 在我的解决方案中,您不必使用while (rs.next()) ..
,这甚至并不复杂。
问题是我使用的是动态查询,它应该根据名称显示计数。这无济于事
@user3407440,参见上面的编辑。【参考方案2】:
试试这个:
int rowcount = 0;
if (rs.last())
rowcount = rs.getRow();
rs.beforeFirst();
编辑:
您需要像这样更改查询语句,以便可以使用rs.last()
Statement stmt = con.createStatement(rs.TYPE_SCROLL_INSENSITIVE);
ResultSet rs = stmt.executeQuery("Your query");
查看Oracle Docs
【讨论】:
为什么不使用 resultSet.getRow()? @Nabin:- 那是我用的 ;) 它没有解决问题,我得到了这个错误:java.sql.SQLException: Invalid operation for forward only resultset : last @user3407440:- ResultSet.last() 和其他“绝对索引”查询操作仅在结果集可滚动时可用。您需要像这样更改查询语句:Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE );
@user3407440 createStatement
调用至少需要两个参数,参见 documentation conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet. ResultSet.CONCUR_READ_ONLY);
以上是关于获取结果集值的计数[重复]的主要内容,如果未能解决你的问题,请参考以下文章