根据QT(C++)中SQLite数据库中的正则表达式检索记录
Retrieve records according to a regex from a SQLite db in QT (C++)
我正在尝试使用QT/C++
中的QSqlDatabase
和QSqlQuery
从SQLite
数据库中检索记录。我的查询看起来像:
select * from tableName where columnName REGEXP 'regex'
一些消息来源说要创建一个名为REGEXP
的函数,但我找不到任何与QT/C++
有关的线索。
有人能帮我吗?
从Qt版本5.10开始,REGEXP可以与SQLite一起使用,而无需自己实现。但是,它在默认情况下是禁用的。要启用它,请在连接选项中设置标志QSQLITE_enable_REGEXP。
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setConnectOptions("QSQLITE_ENABLE_REGEXP");
请参阅文档
如上所述,您需要提供一些将正则表达式能力导出到SQL的本机C/C++代码。您可以通过调用函数sqlite3_create_function_v2来实现这一点,该函数是用C.编写的SQL库的一部分
由于QSqlDatabase是一个通用的SQL包装器,旨在支持大量的SQL引擎,因此所提供的函数是所有函数中最低的公分母。因此,您无法从Qt访问sqlite3_create_function_v2
。
如果您需要在Qt应用程序中使用REGEXP,则需要在整个项目中使用纯C sqlite库。围绕SQLite的C++包装器是可取的,但根据我自己的经验,没有什么能很好地工作,这就是为什么我们正在开发自己的包装器。挖掘SQLite可能会很痛苦,尤其是当您开始组合不同的C++构建系统时。所以,如果你真的真的需要REGEXP,请注意并问问自己。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 检索 C++ 中的正则表达式搜索
- 无法检索正则表达式匹配结果 - MFC / C++
- 根据QT(C++)中SQLite数据库中的正则表达式检索记录
- 如何检索完整的正则表达式匹配从RE2