在类的一个方法中需要执行2次sql,  sql1和sql2,两者不一样
分别得到两个rs
 conn =DriverManager.getConnection(XXXXXXXXXXXX);
 stmt = conn.createStatement();
 rs1 =  stmt .execute(sql1);
 rs2 =  stmt .execute(sql2);
 stmt .close();
 conn.close();
这样写对吗?还是要这样写
conn=XXX.getConnection();
stmt1=conn.createStatement();
stmt2=conn.createStatement();
 
stmt1.execute(sql1)
 
stmt2.execute(sql2)
stmt1.close()
 stmt2.close()
conn.close() 

解决方案 »

  1.   

    第一个写法应该就可以了吧?
    是检索sql,还是更新sql?
      

  2.   

    第二种可行,第一种会报错。
    最好还是写两个方法,在BIZ层用事务调用。
      

  3.   

    当然是第二种了,你可以看一下方法嘛
    原因是 ResultSet 是需要关闭的。
    如果你用第一种 那么rs2执行的时候 rs1已经被关闭了。。报错是难免的 但是如果你用第二种
    是通过不同的对象 来执行 所以不会有问题我们习惯于 自己写一个DataModel  每次从数据库中查出来的结果都存储起来。然后我们在处理你可以每次查询后 就存一次嘛 不就没有这么多事了
      

  4.   


    等待中...
    (到底哪个对阿,小弟也有此问)
    又及  2个检索sql 和 2个更新sql 或者是一个检索sql 一个更新sql 
    都该是那种情况阿
      

  5.   

    rs1 = stm.execute(sql);
         stm = conn.createStatement();
        rs2=stm.execute(sql);
      

  6.   

    我觉的用预编译处理效率会更高,更方便conn =DriverManager.getConnection(xxxxxxxxxxxx)PreparedStatement st== conn.prepareStatement("xxx?xxx?xx");  st.setString(1, xxx);
      st.setint(2, xxx);  ResultSet rs = st.executeQuery();    while (rs.next()) {       ........ }