当前位置:网站首页>QT连接sqlite数据库的错误及其修改办法
QT连接sqlite数据库的错误及其修改办法
2022-07-27 06:10:00 【hawanglc】
今天在使用qt操作数据库。因为是第一次用,所以,遇到了一些坑,记录一下。
系统:macOS
语言:QT 5.12
错误1:找不到驱动
错误提示:QSqlError("", "Driver not loaded", "Driver not loaded")
原因
在写操作数据库的代码的时候,首先需要一个数据库连接,如下:
QSqlDatabase::addDatabase("QSQLITE");
此时,默认的数据库连接名字是"qt_sql_default_connection"。
如果项目的配置不做调整的话,可执行程序是找不到数据库驱动的。
解决办法
打开qt项目的配置,在环境变量里加上驱动的路径配置。我这边的配置信息如下:
QT_PLUGIN_PATH=/Users/huGuohua/Qt5.12.0/5.12.0/clang_64/plugins
其中,上述目录的子目录sqldrivers里面就有各种数据库连接的驱动。
问题2:无法打开数据库
错误提示:QSqlQuery::exec: database not open
原因
在定义一个QSqlQuery变量的时候,需要有一个参数,这个参数就是用来指定对应的dml去使用哪个数据库连接的。如果定义的时候没有参数,程序也不提示错误,但是这个dml就孤零零地没有和数据库连接关联起来。也就出现了上面的错误。
解决办法
在定义dml的时候,需要马上和对应的数据库连接关联上。即如下:
QSqlQuery sql_update(database);
错误3:参数绑定的数量不匹配
错误提示:QSqlError("", "Parameter count mismatch", "")
原因
以下是不会出错的流程,如果不按这个流程,都可能会导致上面的错误出现。
正常的需要参数绑定的时候,代码的流程是:定义 QSqlQuery,然后最好clear()一下,接着用prepare()来处理对应的SQL。SQL中的参数的写法有两种:a)问号作为占位符:此时要使用addBindValue来将变量一个一个的绑定;b)冒号+名字作为占位符:此时要使用bindValue(":name",value)的方式来进行变量绑定;然后调用exec来执行。exec有很多写法,在参数绑定的时候,exec()中就不要写上SQL语句本身了,这个很关键。如果exec()中含有SQL语句的话,即使上面的流程再正确,参数绑定的再好,也是没有用的,exec就直接使用了参数中的SQL了。
边栏推荐
- MySQL limit paging query optimization practice
- 请教大佬们一个问题,pgsqlcdc任务运行一段时间就不能监测变化了,重启就可以了,这个该从哪方面入
- Bash: 创建返回布尔类型值的函数
- 请问有人使用oracle xstream 时出现个别capture延迟很大的吗,该如何解决延迟问题呢
- DDD Domain Driven Design Notes
- TS learning (VIII): classes in TS
- 优炫数据库主要线程有哪些?
- Calledprocesserror during pre commit install
- Generics -- learn it, and there are many benefits
- Watermelon book learning notes - Chapter 1 and 2
猜你喜欢

Visual horizontal topic bug1:filenotfounderror: could not find module 'mvcameracontrol dll‘ (or one of it

如何借助自动化工具落地DevOps|含低代码与DevOps应用实践

把Excel转换成CSV/CSV UTF-8

A Competitive Swarm Optimizer for Large Scale Optimization

A Competitive Swarm Optimizer for Large Scale Optimization

软件测试十大必问面试题(附答案和解析)

MySQL2

一款开源 OA 办公自动化系统

Perl: 将要执行的外部命令拆分为多行

Reflection on pytorch back propagation
随机推荐
李沐动手学深度学习V2-transformer和代码实现
Vscode creates golang development environment and debug unit test of golang
一款开源 OA 办公自动化系统
Firefox browser, when accessing Tencent cloud server, failed to establish a secure connection.
C# 常用功能整合-3
Usage of string class
36 - new promise method: allsettled & any & race
Oracle 组合查询
Pan Aimin, chairman of instruction set, attended the 2022 ecug con to speak for China's technical forces
(转帖)eureka、consul、nacos的对比2
请问有人使用oracle xstream 时出现个别capture延迟很大的吗,该如何解决延迟问题呢
ESP8266(ESP-12F) 第三方库使用 -- SparkFun_APDS9960 (手势识别)
Digital image processing -- Chapter 3 gray scale transformation and spatial filtering
Internal class -- just read this article~
Oracle database problems
Ci framework learning of PHP
使用sqlplus显示中文为乱码的解决办法
flink cdc 抽取oracle的数据,会不断的占用oracle的内存吗,最后引发ora-040
Jest single test style problem [identity obj proxy] NPM package
C语言程序设计 | 程序编译与预处理