QSqlField имя() метод возвращает "" - программирование
Подтвердить что ты не робот

QSqlField имя() метод возвращает ""

У меня есть класс (ServicesTableModel), который наследует от QSqlRelationalTableModel. В конструкторе у меня есть:

ServicesTableModel::ServicesTableModel( QWidget* parent, QSqlDatabase db )
: QSqlRelationalTableModel( parent, db )
{ 
    setTable( "servicios" );
    select();
    ...
}

Теперь, если я поместил строку

qDebug() << primaryKey();

где точки получаются

QSqlRecord( 1 ) 
" 0:" QSqlField("ser_id", int, required: no, generated: yes)

который имеет прекрасный смысл, но после

qDebug() << primaryKey().name();

ответ

""

поэтому я не могу получить имя первичного ключа.

Таблица sqlite, определенная с помощью

CREATE TABLE servicios (ser_id integer primary key, ... )

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

Я обязательно должен что-то делать неправильно, или я не понимаю, что делает метод name()_ из QSqlField.

4b9b3361

Ответ 1

primaryKey.name() возвращает имя индекса.

В SQL индекс может быть назван, и это не зависит от имени поля (ов), используемого для ключа.

Индекс может работать с несколькими полями. Каждое имя поля можно получить с помощью key.fieldName(i), 0<i<key.count()