0
点赞
收藏
分享

微信扫一扫

IDEA快捷键(Ctrl + tab)非常好用 切换最近使用的编辑器选项卡

全栈学习笔记 2024-08-16 阅读 39

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] 执行语句 --- QSqlQuery
    QSqlQuery 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();
         }
    }
举报

相关推荐

0 条评论