换为thin驱动,竟告诉我:不能对只读结果集更新……
faint……
程序一行未动,并且是以updateable方式打开的……!

解决方案 »

  1.   

    很简单的一段代码:
    ResultSet updateRs = stmt2.executeQuery(updateSqlTxt);
    if (updateRs.next()) {
       //Get new quantities and update the ResultSet
      int oldQty = updateRs.getInt(products_quantity);
      updateRs.updateInt(products_quantity, getSum(oldQty, qtyStr));
               
      float oldRev = updateRs.getFloat(products_total);
      System.out.println(oldRev);
      updateRs.updateFloat(products_total, getRev(oldRev, qtyStr, priceStr));
              
      //Send the changes to the database
      updateRs.updateRow();
    }
    其中:getRev返回一个float!
      

  2.   

    同样这段代码,
    当将getRev该为int型,改用:updateInt时,就没有问题,
    当改为thin方式连接数据库时,提示:不能更新只读的结果集……
    而我的stmt2定义为:
    Statement stmt2 = db.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                              ResultSet.CONCUR_UPDATABLE);
      

  3.   

    updateRs.getInt("products_quantity");
    updateRs.getFloat("products_total");
      

  4.   

    to: yoken(雨泉) 
    这个地方应当没有错,products_quantity、products_total是两个String型的
    变量,不是字段名。
    当然,变量里放的是字段名!
      

  5.   

    updateRs.moveToInsertRow();
    .
    .
    .
    updateRs.updateRow();
      

  6.   

    数据库中products_total字段是什么类型的?是double或者number的吗?
    对于你的第二个问题:
    当改为thin方式连接数据库时,
       提示:不能更新只读的结果集……//应该你的查询语句是select * 吧?在使用updaterow 时不能用select *,必须列出所有要查字段而我的stmt2定义为:
    Statement stmt2 = db.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                              ResultSet.CONCUR_UPDATABLE);
      

  7.   

    to: beyond_xiruo(乱谈情) 
    我是更新已存在的记录的字段,不是新插入一行。to: javafounder(漂流) 
    的确,我用的select * ,我改一下试试,
    products_total定义为float型,就算updatedouble不行,可不能用updatefloat也不行啊!
      

  8.   

    这个错误又是怎么产生的:
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6004B508
    Function=kghalo+0x3C8Library=F:\oracle\ora81\bin\orageneric8.dllCurrent Java thread:
    at sun.jdbc.odbc.JdbcOdbc.setPos(Native Method)
    at sun.jdbc.odbc.JdbcOdbc.SQLSetPos(JdbcOdbc.java:4709)
    at sun.jdbc.odbc.JdbcOdbcResultSet.setPos(JdbcOdbcResultSet.java:5019)
    at sun.jdbc.odbc.JdbcOdbcResultSet.updateRow(JdbcOdbcResultSet.java:4053)
    at SaveOrders.main(SaveOrders.java:195)如果我一个update还没有提交,在对这个相同的记录select,然后update它,
    最后一起提交可以吗?
      

  9.   

    两次update,数据库最后存在的是最后一次update的数据.
      

  10.   

    EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6004F1C1
    这个莫名其妙的错误,为什么用updateInt就没有?同样的代码?