REGEXP无法使用SQLITE执行QSqluery

时间:2017-06-09 23:08:00

标签: regex database qt sqlite qsqlquery

我正在尝试执行以下操作:

QSqlQueryModel *model = new QSqlQueryModel();
QSqlQuery *qry = new QSqlQuery(mydb);
QString qstr = "Select * from table WHERE Name REGEXP ";
qstr.append("'");
qstr.append(m_filterText);
qstr.append("'");
qry->prepare(qstr);
qry->exec();
model->setQuery(*qry);

它没有返回任何内容,并记录以下错误:

  

无查询无法获取行

有关为何发生这种情况的任何想法?如果我在sqlite3 shell中运行它,它可以工作。好像QSQLITE适配器缺少REGEXP定义。不确定。

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,你真的应该和Bobby Tables谈谈......

除此之外,SQLITE定义了REGEXP操作,但它没有由SQLITE实现。所以每个框架都必须单独完成。不幸的是,Qt没有实现它,因此一旦定义正确,您的查询将无效。

您必须自己实施REGEXP或等到Qt 5.10。然后Qt将提供基本实现:http://doc-snapshots.qt.io/qt5-dev/sql-driver.html#enable-regexp-operator