我从许多列中提取了大量数据并将它们上传到FileNet。上传后,我将更新从提取值的同一个表中的列。
while循环
while(rs.next) {
//get column1
//get column2
//etc.
try {
upload(datafromcol1, datafromcol2, datafromcol3);
updateFlagSuccess(key);
} catch (EngineRuntimeException e) {
e.printStackTrace();
}
}
setFlagSuccess方法
public void setFlagSuccess(int key) throws SQLException {
Statement statement = null;
Connection con = null;
String querySuccess = "UPDATE FROST_DMS SET STATUS = 'S' WHERE DOC_KEY = '" + key + "'";
try {
con = getConnection();
Loggers.general().trace(LOG, "Query: {}", querySuccess);
statement = con.createStatement();
statement.executeUpdate(querySuccess);
Loggers.general().trace(LOG, "Status flag updated");
} catch (SQLException e) {
con.close();
e.printStackTrace();
}
}
我认为当行"statement = con.createStatement()"
执行时会创建另一个ResultSet
,从而关闭之前的ResultSet
。但要求是每次成功上传都要更新状态标志。因此,我必须在成功提取后每次更新一列。
我试过的步骤:
1 - 我尝试从一开始就添加conn.setAutoCommit(false)
,并在while
循环之后通过conn.commit();
手动提交交易。这不起作用。
2 - 我定义了另一个连接。在PreparedStatement
循环中生成ResulSet
的上一个while
的连接变量为conn
。请注意方法setFlagSuccess
中定义的另一个连接,即con
。
有可能做我想做的事吗?如果没有,是否有解决方法?
我正在使用DB2 V10.5
答案 0 :(得分:0)
Aldryl
看起来您可以使用滚动的ResultSet
。有关它的更多信息,您可以在官方oracle网站的Updating Rows in ResultSet Objects
部分 chart: {
type: 'arearange',
plotBorderColor: '#000000',
plotBorderWidth: 2,
margin: [15, 15, 15, 15],
spacing: [15, 15, 15, 15],
},
教程中阅读,这意味着您可以在阅读期间直接更新您的参赛作品。
如果有帮助请告诉我,否则我会删除不要混淆的答案。