java - 使用 JDBC 更新 1000 多条记录 -
问题描述
嗨,我正在尝试使用Java 数据库连接 (JDBC)更新1000 多条记录,但我的解决方案不起作用:
Connection c = null;
Statement statement = null;
String color = "init";
try{
String builder= "SELECT COLOR,SHAPE FROM TBL_SHAPES"; // this line of code will fetch 1000+ records of data from the database.
c = getConnection();
statement = c.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = statement.executeQuery(builder.toString());
if(rs.getFetchSize() > 0) {
while(rs.next()) {
color = rs.getString("COLOR");
if(!color.equalsIgnoreCase("init")) {//this code will check if the color is not "init"
switch(color) {
case "green":
rs.updateString("SHAPE", "TRIANGLE");
break;
case "orange":
rs.updateString("SHAPE", "CIRCLE");
break;
case "yellow":
rs.updateString("SHAPE", "SQUARE");
break;
}
}
rs.updateRow();
}
}}
有什么有效的方法可以更新 1000 多条记录吗?先感谢您!
解决方案
您可以使用更新查询来更新表
Connection c = null;
PreparedStatement statement = null;
String color = "init";
try{
String builder= "UPDATE TBL_SHAPES SET SHAPE = ? WHERE COLOR = ? ";
c = getConnection();
statement = c.prepareStatement(builder);
statement.setString(1, "TRIANGLE");
statement.setString(2, "green");
statement.addBatch();
statement.setString(1, "CIRCLE");
statement.setString(2, "orange");
statement.addBatch();
statement.setString(1, "SQUARE");
statement.setString(2, "yello");
statement.addBatch();
int[] result = statement.executeBatch();
}catch(Exception e){
}
您可以使用这样的代码来修复它。希望这是你的要求
推荐阅读
- azure - 托管 .NET Core 5 应用程序的 Azure Windows AppService 无法使用 Invoke-Command(“在计算机上找不到服务 WinRM”)
- airflow - 具有不同 conda 环境的气流
- arrays - 数据透视表 - 在 Google 表格中使用计算字段显示增长率
- python - 使用 Hmac-Sha256 进行身份验证后从去中心化交易所获取数据的 Python 代码
- doctrine - 学说覆盖复合键的列值
- python - Flask App 中更改的数据在数据库中更新,但在运行时未在 App 中更新
- javascript - 从 json 文件加载的对象将其值分配给名为 default 的属性
- php - Not Found from php:apache (在没有 Dockerfile 的情况下运行)
- azure-iot-hub - 如何通过专用连接将时序见解连接到 Azure IoT 中心
- r - 在 R Plumber Api 中添加日志