Вы можете использовать Statement.executeUpdate() вместо этого. Конечно, вам также нужно будет изменить оператор SELECT
на оператор UPDATE.
Недостатком является то, что вы теряете доступ к данным одной строки, потому что вы вообще не выбираете их. Если вам это нужно, например. чтобы вычислить обновленное значение (в вашем случае test@<localipaddress>
), вам, возможно, придется сначала запустить выбор, как вы это сделали, вычислить свои обновления в памяти, а затем использовать PreparedStatement или Пакетное обновление для выполнения соответствующих операторов UPDATE
.
Пример подготовленного заявления:
public static int preparedUpdate(Connection conn, String localIPAddress) throws SQLException {
int numChangedRows = 0;
try (Statement stmt = conn.createStatement()) {
ResultSet rs = stmt.executeQuery("SELECT * FROM table1");
while (rs.next()) {
// id => something unique for this row within the table,
// typically the primary key
String id = rs.getString("id");
String jid = rs.getString("column1");
if("abc".equals(jid)) { // just some nonsense condition
try (PreparedStatement batchUpdate = conn.prepareStatement("UPDATE table1 SET column1 = ? where id = ?")) {
batchUpdate.setString(1, localIPAddress);
batchUpdate.setString(2, id);
numChangedRows = batchUpdate.executeUpdate();
}
}
}
}
return numChangedRows;
}
Пример пакетного обновления:
public static int[] batchUpdate(Connection conn, String localIPAddress) throws SQLException {
int[] changedRows = null;
try (PreparedStatement batchUpdate = conn.prepareStatement("UPDATE table1 SET column1 = ? where id = ?")) {
try (Statement stmt = conn.createStatement()) {
ResultSet rs = stmt.executeQuery("SELECT * FROM table1");
while (rs.next()) {
// id => something unique for this row within the table,
// typically the primary key
String id = rs.getString("id");
String jid = rs.getString("column1");
if("abc".equals(jid)) { // just some nonsense condition
batchUpdate.setString(1, localIPAddress);
batchUpdate.setString(2, id);
batchUpdate.addBatch();
}
}
}
changedRows = batchUpdate.executeBatch();
}
return changedRows;
}
person
Alexander
schedule
27.02.2017