QT-8-使用SQL数据库

数据库(掌握)

Qt本身并没有数据库,但是Qt支持市面上绝大多数主流的数据库的连接,前提是运行Qt的电脑上也有对应的数据库产品。

在嵌入式领域、纯软件客户端领域都在使用SQLite数据库作为程序本地数据存储的方式。原因在于SQLite数据库十分轻巧,因此Qt(Qt5以上)中内置了SQLite数据库,不需要单独安装和配置。

Qt支持以下数据库的连接,以下是各个数据库的驱动名称:

QT-8-使用SQL数据库_第1张图片

除了SQLite之外,其它的数据库都需要单独安装和配置驱动程序。并且Qt为这些数据库统一了操作的API,基本上可以做到操作所有的数据库都使用同一套语法。

需要注意的是,使用数据库之前,要在项目配置文件.pro中引入sql模块。

连接数据库

QSQLDatabase:数据库连接类,并不表示数据库本身。

QSqlError:数据库错误信息类,数据库所有的错误信息都通过这个类从数据库底层传递到Qt程序中。

数据库管理软件

数据库连接成功后,可以在构建目录中找到数据库文件。

QT-8-使用SQL数据库_第2张图片

QT-8-使用SQL数据库_第3张图片

后续可以使用SQLiteSpy打开数据库文件。

创建表

创建表使用的是标准的SQL语句,SQL语句可以操作市面上几乎所有的主流数据库,仅仅有部分细小的差别(数据类型、函数)等。

根据之前设计的数据库,编写SQL语句如下:

QT-8-使用SQL数据库_第4张图片

SQLiteSpy软件支持运行SQL语句,可以先在里面尝试运行SQL语句。

QT-8-使用SQL数据库_第5张图片

执行SQL语句结束后,可以展开左侧的表,查看相关表信息是否与预期一致。

QT-8-使用SQL数据库_第6张图片

插入数据

需要先获得用户在Qt界面上输入的数据,然后组装成SQL语句后,经Qt发送到数据库中执行,有两种方法:

1. 拼接SQL语句

这种方案有两大劣势,第一拼接的过程十分繁琐,第二这种方式并不安全(SQL注入问题)。因此在实际开发中并不建议使用这种方式。

2. SQL语句预处理

  • Oracle风格:使用:列名作为参数占位符

  • ODBC风格:使用?作为参数占位符

注意,这种方式在绑定参数的时候必须按照占位符出现的顺序绑定。

删除操作&更新操作

需要注意的是,QSqlQuery的执行结果不表示具体数据操作的结果,只表示该SQL语句是否可以得到正常的执行。

查询操作

  • 查询所有的数据

SELECT * FROM teacher;

  • 查询某个id的人在不在,这是一个普通的WHERE子句的限定查询。

  • 模糊查询

模糊查询使用关键字LIKE,搭配两个通配符:_ %

下划线表示一个字符,百分号表示0个-若干个字符。

例如,查询姓张的人。

SELECT * FROM teacher WHERE name LIKE '张%';

例子,查询庆字辈的人。

SELECT * FROM teacher WHERE ename LILE '_庆%';

需要注意的是,模糊查询的通配符不要跟参数的占位符一样在预处理的SQL语句中出现,应该跟随绑定的数据出现。

你可能感兴趣的:(QT,数据库,qt,sql)