问题描述
Statement st = conn.createStatement();ResultSet rs = null;String strSQL = "select * from books where title like '%"+title+"%'";rs=st.executeQuery(strSQL);rs.last();int rows = rs.getRow();System.out.println("行数:"+rows);在数据库中查询,可以正确查到结果;但是在java里rows的却是0,请问是什么原因? 问题补充:liveHappy 写道
解决方案
你现在的rs证明已经有了结果集对吧?你的目的不是要结果集?非得去取最后的那个行数呗?这么写:Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);把Statement加两个参数。在实验一下。
解决方案二:
神啊,count()一下不行么~~~。我猜测是要做分页吧~~~
解决方案三:
你的sql语句没看出什么问题。如果你在mysql中去查询能查出数据,是因为你的条件是写死的,找个有效的词语做条件就能查询出来。而在java中你写的sql语句是带有变量参数的。那你现在没有查出数据的话,可能是你的参数没有接收到值。我只是这么猜测,或者你提交的参数中带有特殊字符等。你看看提交过来的title变量有值没?
解决方案四:
你可能不太理解getRow方法的用途。源码解释:引用Retrieves the current row number. The first row is number 1, thesecond number 2, and so on.etRow()不是返回数据集的行数多少的!!! 该方法是返回数据库当前行的行号!!!即rs所指的行号 第一行应该为1,第二行应该为2,以此类推。 return源码解释:引用the current row number; <code>0</code> if there is no current row返回当前行数,0,如果是没有当前行数。也就是说由于你没有执行过rs.next()所以,rs指向第一行的上边,所以返回不是1,至于0可能是系统内定的。