(原创)sqlite搜索中出现“QSqlQuery::value: not positioned on a valid record”问题的解决

1、StackOverflow中给出的情况为:
https://stackoverflow.com/questions/9000123/qsqlquery-not-positioned-on-a-valid-record
并不符合我的情况。

2、我在搜索中使用的sql语句为:
“where name=’”+ui->searchEdit->text()+"’ OR id="+ui->searchEdit->text();//+"’"

这句指令按道理可以同时搜索name字符和id数字,但是搜索字符会出现问题(表格都不显示,查证发现是query.exec(sql);这一句有问题),而数字却不会(无论搜不搜的到)

后来经过一系列的测试,发现只使用name的进行搜索的时候是正常的,所以只需要加一个判断,将字符和数字的情况分开来就行了。也就是id="+ui->searchEdit->text()这里,如果他是字符就会出问题。

解决方法:
QString c=ui->searchEdit->text();
if(c >=‘0’ && c<=‘9’){
sql = “where id=”+ui->searchEdit->text();
}
else{
sql = “where name=’”+ui->searchEdit->text()+"’";
}

问题解决(qt好多坑啊)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你仍然遇到 "QSqlQuery::exec: database not open" 和 "QSqlQuery::prepare: database not open" 错误,尽管你确认数据库连接已经正确打开,那么可能是由于以下原因之一: 1. 链接名称问题:确保在使用 `QSqlQuery` 对象时,传递了正确的数据库连接名称。在你的代码,连接名称为 "connect"。请使用 `QSqlDatabase::database()` 方法以及正确的连接名称来获取数据库连接。 ```cpp QSqlDatabase db = QSqlDatabase::database("connect"); QSqlQuery query(db); ``` 2. 数据库驱动程序问题:确保你使用的数据库驱动程序已正确加载,并与你的数据库类型兼容。可以使用 `QSqlDatabase::drivers()` 方法检查可用的数据库驱动程序列表。如果需要,尝试使用其他驱动程序或更新驱动程序版本。 3. 编译问题:如果你使用了外部数据库驱动程序库,如SQLite或MySQL,确保在编译和链接应用程序时正确设置了库路径和库文件。特别是在使用外部库时,Qt的插件系统可能需要额外的步骤来加载和使用这些库。 4. 数据库文件路径问题:再次检查数据库文件的路径是否正确,并且你有足够的权限读取该文件。如果数据库文件位于受限制的目录(例如系统目录或只读目录),请尝试将其移动到其他位置,并确保你可以访问该位置。 如果以上方法仍然无法解决问题,请提供更多的上下文信息、代码示例和错误信息,以便我能够更详细地帮助你解决问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值