c++ - QSqlField name()方法返回 ""

标签 c++ sql qt

我有一个继承自 QSqlRelationalTableModel 的类 (ServicesTableModel)。在构造函数中我有:

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, ... )

这很重要,因为我试图为与表中的行密切相关的对象泛化类,并且不必向构造函数提供主键名称似乎很自然。

我肯定做错了什么,或者我不明白 QSqlField 中的 name()_ 方法是做什么的。

最佳答案

primaryKey.name()返回索引的名称。

在 SQL 中,可以命名索引,这与用于键的字段的名称无关。

一个索引可以作用于多个字段。 每个字段名称都可以用 key.fieldName(i) 检索。 , 与 0<i<key.count()

关于c++ - QSqlField name()方法返回 "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267193/

相关文章:

python - Shiboken无法导入

c++ - 如何编写一个在没有任何条件的情况下也有条件(真假)的通用仿函数?

c++ - 错误 C2661,使用 5 个参数构建时出现问题,SFML 2.3

c++ - 使用 Boost 的 program_options 处理复杂的选项

sql - 重复记录中需要一条记录

c++ - Qt 模糊 QMovie(来自 gif)

c++ - 编译时间字符串散列

sql - 从 Laravel 4 中的不同 PostgreSQL 模式中选择表

sql - 检查另一个表sql中某列的值是否存在

c++ - 从qt中的文件中删除一行?