将结果集updateRow(),数据表的实际值已经更新,但是检查该结果集rwoUpdated()却返回false,不知道为什么,代码如下:resultSet.updateString("bookName",texts.get(1).getText());
resultSet.updateString("ISBN",texts.get(2).getText());
resultSet.updateString("memo",texts.get(3).getText());
resultSet.updateRow();
//在此检查resultSet.rowUpdated()返回false;问题:
1.执行完上述代码后没有任何异常,但是检查resultSet.rowUpdated()返回false
2.在执行上述代码之前,已经resultSet.absolute(2);执行上述代码后再次resultSet.absolute(2),而且查看数据库表中的数据确实已经被更新,但是执行resultSet.getString("bookName")等却返回更新前的数据,这是为什么?说明:
1.数据库使用SQL Server 2000,JDBC连接取数都没有问题
2.该结果集是可滚动可更新的(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE)已经测试。
3.该结果集中放的是检索的数据,即“select.....”
4.执行上述代码后,查看数据库表里的实际数据已经被更新了。

解决方案 »

  1.   

    是不是需要重新生成rs呀,我这里有一段代码,希望能帮上你,
     try
          {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:student","sz","sz");
    stm=con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
                                          ResultSet.CONCUR_UPDATABLE);
    rs=stm.executeQuery(sqlcommand2);
    rs.next();
    for(int i=0;i<rs.getRow();i++)
    {
          rs.moveToCurrentRow();//你没有这条语句,试试看
          rs.updateInt(subject,i+1);
          rs.updateRow();        
          rs.next();
    }
    rs.close();
    stm.close();
    con.close();
          }catch(Exception e)
          {
          }
      

  2.   

    rs.moveToCurrentRow();//你没有这条语句,试试看============================================先前已经试过,不是这的问题。另外,你在你的代码中加入句代码,看看结果是什么
    rs.updateInt(subject,i+1);
    rs.updateRow();
    System.out.println(rs.getInt(subject)); //加上这句,看看打印出什么,如果你更新前的值和更新后的不一样,看看打印出什么时候的值。
      

  3.   

    朋友有没有好一点的java书,介绍一下
      

  4.   

    我觉得比较不错的书,也是我看过的,thinking in java,core java2,java与模式
      

  5.   

    不知道你是怎么能打印出修改后的值的呢,我用的是Sql Server 2000,难道是数据库的差异吗
      

  6.   

    我用的数据库是Access,按照我上面的程序代码操作,显示的结果为修改后的数据,顶
      

  7.   

    能不能把你看过的好书分享一下谢谢了[email protected]
      

  8.   

    我没有电子版的呀
    我把数据库换成了Oracle,可以了,但是为什么SQLServer不可以呀,我不能换数据库的,请教高手,救命