更新ResultSet后调用getInt仍获旧值,如何获取本地更新值?
解决ResultSet更新后get方法仍取旧值的问题
当你调用updateInt修改ResultSet的列值后,默认的getInt方法会读取数据库原始快照数据,而非本地更新后的缓存值,所以会拿到旧数据。要获取本地更新后的值,有两种可行方式:
方式一:使用带GET_CURRENT_VALUE参数的get方法重载版本
直接调用getInt的重载方法,传入ResultSet.GET_CURRENT_VALUE参数,就能读取本地缓冲区里的更新后值:
myresultset.updateInt("qty", newqty); // 获取本地更新后的值 int updatedQty = myresultset.getInt("qty", ResultSet.GET_CURRENT_VALUE);
方式二:提交更新到数据库后再读取
如果不需要保留本地未提交的修改,可先调用updateRow()将更新同步到数据库,之后普通的getInt就能拿到新值:
myresultset.updateInt("qty", newqty); // 将更新提交到数据库 myresultset.updateRow(); // 此时可获取到数据库中的新值 int updatedQty = myresultset.getInt("qty");
注意事项
确保你的ResultSet是可更新的,创建Statement时必须指定对应的参数:
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet myresultset = stmt.executeQuery("SELECT qty FROM your_table WHERE ...");
内容的提问来源于stack exchange,提问作者Allexj
相关产品推荐
相关产品推荐

