2015-06-14 7 views
2

Я работаю над базой данных, содержащей 2 столбца (NOM (String), TMP (целое число)). Но когда я попытался его обновить, первая строка стала последней. Могу ли я обновить его и поддерживать тот же порядок?update database java

Statement state = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 

     ResultSet result = state.executeQuery("SELECT * FROM cities"); 

     result.absolute(1); 
     result.updateString("NOM", "xxx"); 
     result.updateRow(); 

enter image description here Вот мой databasebefore и после excution моего кода.

+0

Не связано с вашим вопросом, но иметь название города как первичный ключ может вызвать проблемы, потому что они не обязательно уникальны. –

+1

Вы работаете под неправильным пониманием: таблицы в SQL не имеют встроенного порядка. То, что оно возвращало строки по порядку первичного ключа, было по усмотрению db. Без инструкции 'ORDER BY ...', db будет возвращать строки в любом порядке. У вас нет (никакого?) Контроля над этим, на него влияют факторы вне вашего прямого управления (то есть текущее использование чтения диска). Если вам нужна определенная строка, используйте предложение WHERE. Если вам нужна первая строка, вам нужно «ORDER BY», или вы (в конце концов) получите разные результаты, когда вы этого меньше всего ожидаете. –

ответ

1

Результаты отображаются по первичному ключу. Так как вы изменили первичный ключ nom, изменилось также изменение заказа.

0

Brent является правильным. Обычно результаты сортируются по первичному ключу в таблицах. Когда вы изменили первичный ключ, он отображает обновленный порядок.