如果数据已更改,则不更新结果集中的行
2022-09-04 04:50:58
我们正在从各种数据库类型(Oracle,MySQL,SQL-Server等)中提取数据。一旦它成功写入文件,我们希望将其标记为已传输,因此我们更新特定的列。
我们的问题是,用户有可能在此期间更改数据,但可能会忘记提交。使用“选择更新”语句阻止记录。因此,它可能会发生,我们将某些东西标记为已传输,但事实并非如此。
这是来自我们代码的摘录:
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet extractedData = stmt.executeQuery(sql);
writeDataToFile(extractedData);
extractedData.beforeFirst();
while (extractedData.next()) {
if (!extractedData.rowUpdated()) {
extractedData.updateString("COLUMNNAME", "TRANSMITTED");
// code will stop here if user has changed data but did not commit
extractedData.updateRow();
// once committed the changed data is marked as transmitted
}
}
该方法返回 false,因为从技术上讲,用户尚未更改任何内容。有没有办法不更新行并检测数据是否在此后期阶段已更改?extractedData.rowUpdated()
不幸的是,我无法更改用户用于更改数据的程序。