ResultSet结果集的奇怪问题,请大家参与一下

public class PreparedStatementTest {


 public static void main(String[] args) throws Exception {


  Class.forName("com.mysql.jdbc.Driver") ;  
  Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/smss" , "root" , "mysql") ;


  PreparedStatement pstate = conn.prepareStatement("select * from sms_user_sending where channel=15") ;
  ResultSet rs = pstate.executeQuery() ;
  while (rs.next()) {
   System.out.println(rs.getInt(1)) ;
  }
  rs.close() ;
  pstate.close() ;
  conn.close() ;
 }
}

 

此段代码在运行的时候如果选择run模式,没有任何问题,但是用Eclipse选择Debug模式进行单步调试运行,则会报异常信息:

Exception in thread "main" java.sql.SQLException: Before start of result set
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
 at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:692)
 at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2372)
 at com.test.PreparedStatementTest.main(PreparedStatementTest.java:12)

 

请问有人遇到这样的问题没有,请指点一下.

你环境的问题?

反正我在自己的环境上跑。Run和Debug没区别。

异常没捕获嘛。。你看看有什么异常捕获一下。。。
ECLIPSE 一般在页面上都会有异常捕获提示吧。。。

resultset的游标的起始位置是第一行前面,如果在这之前没有next()一下,就会出现这种异常。

你的异常体系最好别这样写,要不抛出异常时,你也不知道是哪里抛出的。

最好把异常处理程序也加上。

com.test.PreparedStatementTest.main(PreparedStatementTest.java:12)
这行代码指的是哪行代码位置

异常没有捕捉,这种sql的异常时可以捕捉的。