我想更新mySql数据库中特定列上的每一行。目前,我在java.sql.PreparedStatement
每行中使用一个,并在for循环中进行迭代。我想知道在Java编程方面是否还有其他选择可以减少这种时间和资源的消耗(类似于批量执行准备好的语句)。更新是从Java代码进行的,因为这是我从中获取值的地方。我也没有兴趣在服务器上制作存储过程,因为我没有这样做的权利。
这里是一个示例的链接,该示例使用Java的Prepared语句执行批处理更新。我还提供了该站点的示例以供快速参考。
http://www.exampledepot.com/egs/java.sql/BatchUpdate.html
try {
// Disable auto-commit
connection.setAutoCommit(false);
// Create a prepared statement
String sql = "INSERT INTO my_table VALUES(?)";
PreparedStatement pstmt = connection.prepareStatement(sql);
// Insert 10 rows of data
for (int i=0; i<10; i++) {
pstmt.setString(1, ""+i);
pstmt.addBatch();
}
// Execute the batch
int [] updateCounts = pstmt.executeBatch();
// All statements were successfully executed.
// updateCounts contains one element for each batched statement.
// updateCounts[i] contains the number of rows affected by that statement.
processUpdateCounts(updateCounts);
// Since there were no errors, commit
connection.commit();
} catch (BatchUpdateException e) {
// Not all of the statements were successfully executed
int[] updateCounts = e.getUpdateCounts();
// Some databases will continue to execute after one fails.
// If so, updateCounts.length will equal the number of batched statements.
// If not, updateCounts.length will equal the number of successfully executed statements
processUpdateCounts(updateCounts);
// Either commit the successfully executed statements or rollback the entire batch
connection.rollback();
} catch (SQLException e) {
}
public static void processUpdateCounts(int[] updateCounts) {
for (int i=0; i<updateCounts.length; i++) {
if (updateCounts[i] >= 0) {
// Successfully executed; the number represents number of affected rows
} else if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {
// Successfully executed; number of affected rows not available
} else if (updateCounts[i] == Statement.EXECUTE_FAILED) {
// Failed to execute
}
}
}
反正可以禁用SQL,我只是想测试我的读写器和处理器工作正常。
问题内容: 我有一个dao,它基本上使用hibernate将记录插入到一个表中,该dao用标记为注释,并且我有一个服务,该服务会生成其他一些东西,然后调用我的dao。我的服务也标注了使用。 我叫服务循环。我在dao上的插入内容是否可以批量或一个接一个地工作?我如何确定它们可以批量工作?hibernateTransaction Manager是否管理批处理插入? 我正在使用Oracle DB。
通过遍历CSVReader类,我发现了一个定义的自定义异常,该异常与我得到的异常完全相同。但我认为当在某个double qoute(CSV文件的单元格值)中发现一个双引号时,它就会出现。我将该链接称为:https://github.com/mulesoft/salesforce-connector/blob/master/src/main/java/com/sforce/async/csvread
本文向大家介绍批处理BAT创建快捷方式,包括了批处理BAT创建快捷方式的使用技巧和注意事项,需要的朋友参考一下 发个有用的东西——批处理创建快捷方式。非我原创,这里整理一下,希望对大家有用。 一、批处理生成快捷方式: 1、可以直接生成: 2、也可以先设置变量: 二、查看与解释 1、生成的快捷方式是一个url链接,用记事本打开,得到以下内容: 2、以下是快捷方式内容的解释: 三、Windows系统S
添加工作到批处理作业 在“常规”选项卡的底部窗格中,选择工作类型,然后如有需要浏览连接、数据库和/或模式以找出你想运行的工作。 你可以双击或拖放工作来将工作从“可用的工作”列表移动到“已选择的工作”列表。若要从已选择的工作列表删除工作,请以相同的方式移除它们。你可以在一个批处理作业中运行来自不同服务器的配置文件。 若要重新排序工作的序列,可使用 “上移”或 “下移”按钮。 如果你想备份整个服务器,
添加工作到批处理作业 在“常规”选项卡的底部窗格中,选择工作类型,然后如有需要浏览连接、数据库和/或模式以找出你想运行的工作。 你可以点击 或 来将已选择的工作或所有工作从“可用的工作”列表移动到“已选择的工作”列表。若要从已选择的工作列表删除已选择工作或所有工作,请点击 或 。你可以在一个批处理作业中运行来自不同服务器的配置文件。 若要重新排序工作的序列,可在已选择的工作列表中拖拉工作到所需的位