Язык SQL

Модификация баз данных с помощью результирующих множеств


Для модификации значений полей результирующего множества используются разнообразные методы обновления. Например, можно изменить значение поля lastName текущего клиента на новое значение “Jones” с помощью метода updateString:

result.updateString("lastName","Jones");

Метод update класса Customer (строки 15—25 на 10.5) использует обращения к методу updateString, чтобы передать поля из Customer в поля ResultSet.

Обновление результирующего множества не изменяет запись базы данных, связанную с указателем курсора (п. 5 в 10.1). Для обновления базы данных новым содержимым текущей строки необходимо вызвать метод UpdateRow. Полная реализация метода update класса CustomerEditor представлена в строках 2—8 на 10.6. Его параметр содержит значения всех полей, независимо от того, подверглись ли они изменениям. Метод вначале проверяет (строки 3—5),, является 5 ли поле параметра accountld таким же, как соответствующее поле текущей строки результирующего множества. Метод не позволяет пользователю изменять accountld клиента, тем самым обеспечивая защиту первичного ключа таблицы. Поля результирующего множества модифицируются, и строка обновляется в строках 6 и 7.

1 public class CustomerEditor { //некоторые методы

2 public void update(Customer customer) throws SQLException) {

3 if (customer.accountld!=result.getlnt("accountld")) {

4 return; //обновления не разрешены, если не совпадают

accountld

5 }

6 customer.update(result);

7 result.updateRow();

8 }

9 public void delete(int accountld) throws SQLException {

10 if (accountld!=result.getlnt("accountld")) {

11, | // невозможно удалить, если не совпадают accountld

12 ’ throw new SQLException("accountlds don’t match delete ");

13 }

14 result.deleteRow();

15 }

16 public void insert(Customer customer) throws SQLException

17 result.moveT6InsertRow(); //ошибка, если не обновляемое

18 customer.update(result);

19 result.insertRow(); //ошибка, если вставка неудачна

20 }

21 }

Комментарии закрыты