相关的代码如下,无关的我就不贴上来了。主要就是点击Delete按钮能够删除选中的行,并在数据库中删除对应数据。可是为什么在deleteData方法调用时总是出现 java.sql.SQLException: After end of result set. Can not call deleteRow().
这个错误           public AddToMysqlByTable(){
//链接数据库
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver loaded");
connection=DriverManager.getConnection(
"jdbc:mysql://localhost/test","root","8824974");
System.out.println("Database connected");
statement=connection.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
resultSet=statement.executeQuery("select * from testmysql");
}
catch(Exception e){
System.out.println("链接"+e.toString());
}
                  jbtDelete.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//从数据库删除选定行数据
deleteDate();
//删除行
deleteRow();
}
});
                }
         //删除数据库数据
private void deleteDate(){
try{
resultSet.deleteRow();
}
catch(Exception e){
System.out.println(e.toString());
}
}

解决方案 »

  1.   

    并且在方法中添加 resultSet=statement.executeQuery("select * from testmysql"); 这行后,会出现 java.sql.SQLException: Before start of result set. Can not call deleteRow().这个错误,让我感到很纠结啊 private void deleteDate(){
            try{
                resultSet=statement.executeQuery("select * from testmysql");---添加这行
                resultSet.deleteRow();
                }
            catch(Exception e){
                System.out.println(e.toString());
            }
        }
      

  2.   

    可能是mysql不支持这个函数吧。
      

  3.   

    一个疑问你核实:
    在调用resultSet.deleteRow()之前,没有任何移动记录指针到指定行的代码?
    在这一行前加System.out.println(resultSet.getRow());看看想要删的到底是不是你要删的行号
      

  4.   

    这个么,很明显,executeQuery刚得到的结果集,记录指针指向第一行之前,试图删之当然报那样的错
      

  5.   

    你必须先调用rs.next()移动到你想删除的记录上,再调用deleteRow方法的,否则它也不知道你想删除哪一行
      

  6.   

    谢谢大家,我找到错误了,开始看API时还以为会自动帮我删除选定的行,还让我觉得真智能,哈哈。