Правильный синтаксис будет выглядеть примерно так:
UPDATE GLOBALSETTINGS
SET settingValue = case
when settingName = 'SessionTTL' = then ?
when settingName = 'MaxUsersActive' = then ?
else settingValue
end
WHERE settingName in ('SessionTTL', 'MaxUsersActive');
Однако я бы не рекомендовал это, поскольку это затрудняет чтение и поддержку вашего кода.
Возможно, вам лучше работатьдва оператора обновления:
String sql =
"UPDATE GLOBALSETTINGS " +
" SET settingValue = ? " +
"WHERE settingName = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "40");
pstmt.setString(2, "SessionTTL");
pstmt.executeUpdate();
pstmt.setString(1, "20");
pstmt.setString(2, "MaxUsersActive");
pstmt.executeUpdate();
Если вы хотите сохранить несколько обращений в базу данных, вы можете запустить это как пакетный оператор:
pstmt.setString(1, "40");
pstmt.setString(2, "SessionTTL");
pstmt.addBatch();
pstmt.setString(1, "20");
pstmt.setString(2, "MaxUsersActive");
pstmt.addBatch();
pstmt.executeBatch();
Это отправит два оператора в один ход"к серверу базы данных.
Примечание: я предполагаю, что settingName уникален.