我使用 SQLite 3.x、Qt 5.7、C++ QSqlTableModel
、、QTableView
类。该表sites
包含唯一url
列。在小数据修改的情况下,我想避免冗余选择并最小化/排除我的模型的完全重置。QSqlRecord
所以,我更喜欢在这个项目中使用只读的原始 SQL 查询和写作。我通过更改相应的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 内部方法进行更快的搜索。如何found_id
在 SQLite 中找到正确的标识符(让我们命名)以便调用QSqlRecord record = row(found_id);
?请注意,也将使用插入和删除。
这是简化的 DDL:
CREATE TABLE sites (
id INTEGER PRIMARY KEY,
url VARCHAR UNIQUE NOT NULL
);