if(e.getSource()==((ZiChanLeiBie)jf).tianjia){
            try {
                String leibie,lei;
                leibie=((ZiChanLeiBie)jf).dalei.getSelectedItem().toString();
                lei=((ZiChanLeiBie)jf).xiaolei.getSelectedItem().toString();
                cn = SqlDrive.qiaojie();
                Statement s =cn.createStatement();
                ResultSet rs =s.executeQuery("insert into leibieguanli(leibie,mingchen) values('"+leibie+"','"+lei+"')");
                JOptionPane.showMessageDialog(jf,"添加成功","提示",1);
            } catch (ClassNotFoundException ex) {
                JOptionPane.showMessageDialog(jf,"添加失败,数据库连接错误","提示",3);
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(jf,"添加失败","提示",3);
            }
        }执行结果弹出了第3个提示,添加失败,但是数据库里却添加进去了...
这是为什么啊?

解决方案 »

  1.   

    可能是你的数据库设置的是自动提交,你可以设置手动提交
    db.setAutoCommit(false);
    并且加上出错后回滚处理,应该就不会提交进去了if(e.getSource()==((ZiChanLeiBie)jf).tianjia){ 
                            try   { 
                                    String   leibie,lei; 
                                    leibie=((ZiChanLeiBie)jf).dalei.getSelectedItem().toString(); 
                                    lei=((ZiChanLeiBie)jf).xiaolei.getSelectedItem().toString(); 
                                    cn   =   SqlDrive.qiaojie(); 
                                    Statement   s   =cn.createStatement(); 
                                    ResultSet   rs   =s.executeQuery("insert   into   leibieguanli(leibie,mingchen)   values('"+leibie+"','"+lei+"')"); 
                                    cn.commit();                                JOptionPane.showMessageDialog(jf,"添加成功","提示",1); 
                            }   catch   (ClassNotFoundException   ex)   { 
                                    JOptionPane.showMessageDialog(jf,"添加失败,数据库连接错误","提示",3); 
                            }   catch   (SQLException   ex)   { 
                                    cn.rollback();
                                    JOptionPane.showMessageDialog(jf,"添加失败","提示",3); 
                            } 
                    } 
      

  2.   

    ResultSet rs =s.executeQuery("insert into leibieguanli(leibie,mingchen) values ('"+leibie+"','"+lei+"')");执行这句话抛异常,但是SQL语句执行了!有点没思路了!
    如果SQL语句错误,应该无法添加到数据库呀!
      

  3.   

    你把错误信息打出来看看是什么
    ex.printStackTrace();
      

  4.   

    java.sql.SQLException: No ResultSet was produced约束取消掉,但是还抛异常!.....无语了
      

  5.   

    明白了,你写错了
    stmt.executeQuery(sql);  
    这个是用于查询语句select的  
    你这样用虽然也能完成数据库的插入和修改操作,不过会抛出你那个异常,解决办法为:  
    1、使用查询语句时  
    ResultSet  rs=stmt.executeQuery(sql);  
    2、进行插入或修改操作时  
    stmt.executeUpdate(sql);
      

  6.   

    executeUpdate是执行删除和更新的
    executeQuery是执行查询和插入的
    ....
      

  7.   

    executeQuery只针对查询
    executeUpdate是插入,更新,删除
      

  8.   

    executeUpdate是执行删除和更新的 
    executeQuery是执行查询和插入的 我们老师说的,还特地叫我们记下来!操的!
      

  9.   

    只要记住单词字面意思就可以了
    Query就是询问 查询的意思
    Update校正 更新 也即用于增删改