在QSqlTableModel和SQLite中快速搜索行

时间:2016-11-01 08:49:35

标签: c++ qt sqlite qt5 qsqltablemodel

我使用SQLite 3.x,Qt 5.7,C ++,QSqlTableModelQTableView类。表格sites包含唯一的url列。在小数据修改的情况下,我想避免冗余选择并最小化/排除模型的完全重置。所以,我更喜欢在这个项目中使用只读原始SQL查询并通过QSqlRecord编写。我通过更改相应的QSqlRecord实例来更新模型中的行。但是我必须对要更新的记录进行线性搜索(参见下面的伪代码):

for (int i = 0; i < rowCount(); ++i)
{
    QSqlRecord current_record = record(i);
    QString current_url = current_record.value("url").toString();
    if (current_url == url)
    {
       //updates... 
       break;
    }
} 

我想使用SQLite内部手段来加快搜索速度。如何在SQLite中找到正确的标识符(我们将其命名为found_id)以便调用QSqlRecord record = row(found_id);?请注意,也将使用插入和删除。

这是简化的DDL:

CREATE TABLE sites (
id                 INTEGER PRIMARY KEY,
url                VARCHAR UNIQUE NOT NULL
                         );

0 个答案:

没有答案