问题:UPDATE 语句单独在ACCESS里可以正常更新;程序中,尝试其他语句可以进行;无法使用UPDATE(我尝试换成简单的UPDATE代码也不行),异常提示是:"ResultSet is closed"。请问该如何解决?
代码:
import java.sql.*;class MainExcutive {
public static void main (String[] args){
String dbDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=./12.mdb";
String user="";
        String password="";
Connection connection=null;
Statement statement=null;
ResultSet  results=null;

try{
Class.forName(dbDriver).newInstance();
        connection=DriverManager.getConnection(url,user,password);
statement=connection.createStatement();
results=statement.executeQuery("select * from 12.stock_code");

                       while(results.next())
                        {
             String stockCode=results.getString("stock_code");
             String useCode=stockCode.substring(0, 6)+"."+stockCode.substring(7);
             String str="UPDATE priceASZ1 INNER JOIN Cn1996019812 " +
"ON( priceASZ1.tradeDate=Cn1996019812.rq and Cn1996019812.dm='"+useCode+"') " +
"SET priceASZ1."+stockCode+"=Cn1996019812.fqj";
             statement.executeUpdate(str);
connection.commit();
                        }
}
catch(Exception ex){
System.out.println(ex.getMessage());
} try{
connection.close();
}
catch(Exception ex){
System.out.println("数据库关闭失败");
}

}

解决方案 »

  1.   

    是这样的
    ResultSet都是依赖Statement的,可以当作父子关系
    你在中间把statement改变了,原来是查询,你突然用他去做更新了
    statement与ResultSet的关系就断了,就是说,做更新的时候,因为更改了操作方式,所以statement强行把rs关了。所以就出错了。解决你这个问题,就是再重新create一个statement,别跟以前的发生关系啊。