#c #postgresql #qt5
Вопрос:
БД Qt 5.15.2 (Linux)
: PostgreSQL 13 (Linux)
Обновление записи базы данных с помощью QSqlTableModel setData возвращает значение false во второй строке. Запрос в последнем списке модели возвращает пустую строку.
Подготовка стола:
create table email (nr integer NOT NULL,id serial primary key,priority integer not null,address varchar(100)) insert into email (nr, priority, address) values (358, 1, 'name@domain.country') insert into email (nr, priority, address) values (358, 2, 'second@domain.country')
Упрощенный код
fModel = new QSqlTableModel (this, db); // instance of QSqlTableModel fModel-gt;setTable ("email"); fModel-gt;setFilter ("nr=358"); fModel-gt;select (); ... void swapPriority () { int row0 = 0; // hardcoded for test (rows are existing) int row1 = 1; int priority0 = fModel-gt;index (row0, 2).data ().toInt (); int priority1 = fModel-gt;index (row1, 2).data ().toInt (); // this is executed sucessfully if (!fModel-gt;setData (fModel-gt;index (row0, 2), priority1)) { QString error = fModel-gt;lastError ().text (); } // this one fails if (!fModel-gt;setData (fModel-gt;index (row1, 2), priority0)) { QString error = fModel-gt;lastError ().text (); // empty string } }
Возможно, мне чего-то не хватает в принципе. Есть какие-нибудь намеки ?