当前位置: 首页> 财经> 金融 > Qt系列之数据库(一)

Qt系列之数据库(一)

时间:2025/7/9 11:07:03来源:https://blog.csdn.net/qq_44849154/article/details/141220613 浏览次数:0次

Qt 数据库开发是指在Qt框架下进行数据库操作的开发工作。Qt提供了一套强大的数据库模块,可以方便地与多种数据库进行交互,如SQLite、MySQL、PostgreSQL等。
在这里插入图片描述

该模块中接口是使用C++语言,也就是说,学习相关的类及类的接口使用。
在这里插入图片描述
qt对数据库的使用步骤:
第一步:在项目增加数据库模块操作
在这里插入图片描述

第二步:根据类型来连接数据库,将数据库转换成一个类对象(QSqlDatabase)
在这里插入图片描述
在这里插入图片描述

具体使用:
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); //跟SQLite3进行连接
db.setDatabaseName(“custom.db”); //给数据库设置一个名字,最好加一个.db后缀

bool ok = db.open();//打开数据库,相当于文件中的open函数

以上的操作,相当于创建了一个sqlite数据库文件,并且处于打开状态。
第三步:利用sql语言来操作数据库
在这里插入图片描述
在这里插入图片描述

对于数据库操作主要包括:创建表 插入数据到表,从表中查询数据出来 更新表中数据 删除表中数据,在执行这些功能时,都是使用sql语言来完成,每个实 现都是以对应的关键字开头
比如:创建表

CREATE TABLE table_name(column1 datatype  PRIMARY KEY(one or more columns),column2 datatype,column3 datatype,.....columnN datatype,
);
CREATE TABLE ---- 创建表的关键字
table_name ---- 表名
column1 ---- 列名(字段)
datatype ---- 数据类型
PRIMARY KEY ---- 主键对于主键的操作,通常将它设置为自增长,使用关键字 AUTOINCREMENT,但是,设置为自增长时,该字段的数据类型必须为整型(INTEGER),不能写成int

对于执行sql语句的类为 QSqlQuery

boolexec(const QString &query) //执行一个query的sql语句boolexec()//也是执行一个sql语句,通过跟prepare函数来使用
boolprepare(const QString &query)//提前准备好一条sql语句

代码实现:
//[2] 创建一个数据库中的表,对于sql语言,不区分大小,一个sql语句,就相当于一个字符串

 QString sqlTable = QString("CREATE TABLE staff(id INTEGER PRIMARY KEY AUTOINCREMENT,""name varchar(20),""age int);");qDebug() << sqlTable;//[3] 执行语句 --- QSqlQueryQSqlQuery query;query.prepare(sqlTable);if(!query.exec()){qDebug() << "Error Failed to create table"<<db.lastError();}

使用图形化工具查询的结果:

第四步:插入数据到表中
语法:

INSERT INTO TABLE_NAME (column1, column2, `在这里插入代码片`column3,...columnN) 
VALUES (value1, value2, value3,...valueN);INSERT INTO -----关键字
TABLE_NAME ---- 表名
VALUES ---- 关键字

代码实现:
//向表中插入数据 在给字段为字符串类型的字段赋值时,那么要加单引号

   QString sqlInsert = QString("INSERT INTO staff(name,age) VALUES('李四',20)");if(!query.exec(sqlInsert)){qDebug() << "Error Failed to insert record"<<db.lastError();}

使用图形化工具查询的结果:
在这里插入图片描述

第五步:查询表中记录
语法:

SELECT column1, column2, columnN FROM table_name;
SELECT ---- 关键字
column1, column2, columnN --- 列的字段名
FROM ----- 关键字
table_name ----- 表名

从表中查询出指定字段的对应的值,如果想要查询所有字段的值
SELECT * FROM table_name;
查询指定字段的值:

QString sqlSelect = QString("SELECT name FROM staff;");if(!query.exec(sqlSelect)){qDebug() << "Error Failed to slect record"<<db.lastError();}else {//开始读取表中的记录while (query.next()) {//通过字段名来获取对应的值qDebug() << query.value("name").toString();}}

查询所有字段的值:

QString sqlSelect = QString("SELECT * FROM staff;");if(!query.exec(sqlSelect)){qDebug() << "Error Failed to slect record"<<db.lastError();}else {//开始读取表中的记录while (query.next()) {//通过字段名来获取对应的值qDebug() << query.value("name").toString();qDebug() << query.value("age").toInt();}}
关键字:Qt系列之数据库(一)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: