Как вставить в таблицу базы SQLite строку в нужную позицию? |
Здравствуйте, гость ( Вход | Регистрация )
Как вставить в таблицу базы SQLite строку в нужную позицию? |
Rocky |
12.2.2009, 23:56
Сообщение
#1
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Отображение таблицы базы SQLite делаю с помощью модели и QTableView. Хочу сделать удаление/добавление строк. Код взял из примера для sqlbrowser (который в demos). Удаление вроде как работает, а со вставкой проблемы. В таблицу строка вставляется туда, куда нужно, а вот после вызова submitAll(), эта добавленная строка перемещается в конец таблицы... Это так и задумано, или баг или я чето не так делаю? Если открывать эту таблицу в самом sqlbrowser, то там строка добавляется, но после нажатия кнопки submit, эту добавленную строку вообще не видать.
Таблица ключевых полей не имеет, создавалась через sql-запросы напрямую (INSERT), если надо, могу привести код создания таблицы и попыток вставки строк... Если кто что подскажает, буду очень сильно признателен. Спасибо! |
|
|
Litkevich Yuriy |
13.2.2009, 0:08
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
SABROG |
13.2.2009, 0:14
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
В принципе это логично, что строка в конце оказывается, т.к. при обычной работе с базой данных ты также не можешь вставить записи между какими-то другими. Нужно добавлять специальный столбец сортировки в таблицу в котором менять значения таким образом, чтобы "order by" выдавал нужную последовательность.
|
|
|
Rocky |
13.2.2009, 0:27
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
SABROG, хитро, но в крайнемм случае придется делать так, спасибо ))
Litkevich Yuriy
Удаление строки работает.. А вставку делаю вот так.. |
|
|
Litkevich Yuriy |
13.2.2009, 2:56
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Rocky, а SABROG, совершенно прав!
|
|
|
Rocky |
16.2.2009, 12:58
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Ок, а как правильно это организовать? Я делаю так:
Т.е. добавил поле ID, и после вставки новой строки перенумеровываю всю таблицу.... И штука в том, что таблица перенумеровывается, но вот после вызова submitAll ничего не происходит, новый записи не сохраняются, и измененные ID тоже не сохраняются... В чем беда? поле id создавал так: id INTEGER PRIMARY KEY AUTOINCREMENT -- Добавлено Попробовал создавать таблицу с полем просто id INTEGER. Результат то же. Сообщение отредактировал Rocky - 16.2.2009, 13:27 |
|
|
Текстовая версия | Сейчас: 29.11.2024, 21:59 |