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的异常时可以捕捉的。