如果是使用可更新的游标在rs里面直接改就不用新连接,如果是个sql的话……

解决方案 »

  1.   

    我多加了一个新的连接,
    代码:
    .........................
    public void dodel(String id){
    int chiid = 0;
    int parid = 0;
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String url = "jdbc:odbc:tree";
    Connection conn = DriverManager.getConnection(url,"","");
    Statement st = conn.createStatement();
    String sql = "select * from treemenu where id="+id;
    ResultSet rs = st.executeQuery(sql);
    while(rs.next()){
    parid = rs.getInt(2);
    System.out.println(parid);
    //chiid = rs.getInt(2) - 1;
    //System.out.println(chiid);
    }
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String url1 = "jdbc:odbc:tree";
    Connection conn1 = DriverManager.getConnection(url1,"","");
    Statement st1 = conn1.createStatement();
    System.out.println(parid);
    String sql1 = "select * from treemenu where id="+parid;
    ResultSet rs1 = st1.executeQuery(sql);
    while(rs.next()){
    chiid = rs.getInt(3);
    System.out.println("rs.getChiid================" + chiid);
    }
    System.out.println(chiid);
    chiid = chiid -1;
    System.out.println(chiid);
    int i = st.executeUpdate("update treemenu set chi_id=" + chiid+ " where id=" + parid); 
    String sql2="delete from treemenu where id="+id;
    int count = st.executeUpdate(sql2);
    }catch(Exception e){
    System.out.println(e.getMessage());
    }
    }
    .........................
    可是还有问题,sql语句的条件满足,下面这些语句都没执行,为什么呢?是变量chiid的作用域问题吗?
    while(rs.next()){
    chiid = rs.getInt(3);
    System.out.println("rs.getChiid================" + chiid);
    }