Хорошо, что вы пытаетесь избежать создания специального оператора для каждого обновления.
Не связаны ли поля между собой?Потому что, если они взаимосвязаны, обновление лучше поддерживать согласованность между полями.Поэтому вам нужно сначала прочитать значения, а затем записать все их обратно - как измененные, так и неизмененные.
Если они действительно совершенно не связаны друг с другом, необходимо выполнить серию обновлений вв одно и то же время.
Обычно каждый оказывается где-то посередине - есть кластеры полей, которые взаимосвязаны.Например, запись Person, которая содержит несколько полей, связанных с BillingAddress.В таких случаях подготовьте оператор для каждой группы связанных полей.
Если вы пытаетесь избежать затрат на чтение (чтобы получить текущие значения), тогда рассмотрите хранимую процедуру, в которой неизменны значения полейкодируются значениями NULL.
Если вы не используете ORM, вы также можете рассмотреть возможность использования курсорного ResultSet и обновить поля одно за другим, а затем зафиксировать изменения, используя updateRow()
.См. java.sql.ResultSet .Чтобы сделать то же самое, что и Javadoc, используя PreparedStatement
, вам нужно будет использовать вариант Connection.prepareStatement(...)
.