crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как вставить в таблицу базы SQLite строку в нужную позицию?
Rocky
  опции профиля:
сообщение 12.2.2009, 23:56
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Отображение таблицы базы SQLite делаю с помощью модели и QTableView. Хочу сделать удаление/добавление строк. Код взял из примера для sqlbrowser (который в demos). Удаление вроде как работает, а со вставкой проблемы. В таблицу строка вставляется туда, куда нужно, а вот после вызова submitAll(), эта добавленная строка перемещается в конец таблицы... Это так и задумано, или баг или я чето не так делаю? Если открывать эту таблицу в самом sqlbrowser, то там строка добавляется, но после нажатия кнопки submit, эту добавленную строку вообще не видать.

Таблица ключевых полей не имеет, создавалась через sql-запросы напрямую (INSERT), если надо, могу привести код создания таблицы и попыток вставки строк...

Если кто что подскажает, буду очень сильно признателен. Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Rocky
  опции профиля:
сообщение 16.2.2009, 12:58
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Ок, а как правильно это организовать? Я делаю так:
QModelIndex oInsertIndex = m_pDataTableView->currentIndex();
int nRow = oInsertIndex.row() == -1 ? 0 : oInsertIndex.row() + 1;
m_pModel->insertRow(nRow);

oInsertIndex = m_pModel->index(nRow, 0);
m_pDataTableView->setCurrentIndex(oInsertIndex);
m_pDataTableView->edit(oInsertIndex);

const int nRowNum = m_pModel->rowCount();
for (int i = 0; i < nRowNum; ++i)
{
    QSqlRecord oSqlRecord = m_pModel->record(i);
    oSqlRecord.setValue("id", i + 1);
    m_pModel->setRecord(i, oSqlRecord);
}


Т.е. добавил поле ID, и после вставки новой строки перенумеровываю всю таблицу.... И штука в том, что таблица перенумеровывается, но вот после вызова submitAll ничего не происходит, новый записи не сохраняются, и измененные ID тоже не сохраняются... В чем беда?

поле id создавал так: id INTEGER PRIMARY KEY AUTOINCREMENT

--
Добавлено
Попробовал создавать таблицу с полем просто id INTEGER. Результат то же. :(

Сообщение отредактировал Rocky - 16.2.2009, 13:27
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 1:15