IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Qt -- 1、QT连接数据库 -> 正文阅读

[大数据]Qt -- 1、QT连接数据库

视频教程链接:https://www.bilibili.com/video/BV1Li4y1f7ho?p=3.

类 QSqlDatabase

在这里插入图片描述
上图中的静态成员函数 addDatabase 的第一个参数 type 表示的是我要连接的这个数据库是什么类型的一个数据库,或者说我连接的是一个什么数据库软件。第二个参数是默认参数,不用管。

类 QSqlDatabase的常用接口

在这里插入图片描述
在这里插入图片描述
上面函数 setDatabaseName 和 removeDatabase 的参数是要打开或关闭数据库文件路径。

下面开始在 QT 软件中来操作一下。

首先要加入头文件 #include <QSqlDatabase>(这里在 main.cpp 中)
在这里插入图片描述
从图中可以看到在头文件下面会有一条黄色的线并且显示没有这么一个文件或目录。那为什么会是这样的呢?
这就要了解一下 QT 的架构,它的整个框架是分模块的。我们常用的有两个模块,分别是 Qt Core 和 QT GUI 模块。
在这里插入图片描述
而 QSqlDatabase 是属于 Qt SQL 这个模块的。因此还要在项目中添加这个模块。那怎么添加呢?我们要在项目下的 xxx.pro 文件中添加一句话。

QT       += sql

如下图所示。
在这里插入图片描述
此时,再在 main.c 中看下。
在这里插入图片描述
这表明添加成功了。

接下来,要创建一个 QSqlDatabase 的对象,但是它不能通过构造函数来创建,需要通过静态函数 addDatabase 来创建 Sqlite3 数据库的连接。

代码如下:

//创建一个 QSqlDatabase 的对象
//但是它不能通过构造函数来创建,需要通过静态函数
//创建Sqlite3数据库的连接
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

之后,指定要打开哪一个数据库文件,看代码。

//指定要打开哪一个数据库文件(填写该数据库文件的路径)
db.setDatabaseName("/home/chantui/work/code/sqlite3Pro/stu.db");
//判断是否打开成功
if(db.open()==false)
{
    qDebug()<<"打开失败";
}

如果指定路径的数据库文件不存在,将会自动创建一个。
如果想要创建在当前工程目录下,则不需要指定路径,而只写文件名。

db.setDatabaseName("stu.db");

最后,当我们对数据库操作完之后,还要关闭数据库,代码如下。

db.close();
db.removeDatabase("/home/chantui/work/code/sqlite3Pro/stu.db");

代码截图如下:
在这里插入图片描述
运行代码,我们来看下效果。到工程目录下(选择你指定构建器的目录),
在这里插入图片描述

对连接数据库的工作进行封装

在这里插入图片描述

单例模式

图片内容来源链接: https://www.runoob.com/design-pattern/singleton-pattern.html.
在这里插入图片描述
(上图后面,还有一部分关于单例模式的实现方式,可以通过链接调整过去看下,由于本章重点并非放到单例模式上,所以这里不深入往下进行,如果非要区分本节的单例模式的实现属于哪一种,则应该属于懒汉式,不支持线程,是最基本的单例模式的实现方式。)

好,下面来实现下。

首先,创建一个文件,
在这里插入图片描述
这里类名取为 DBHelper (任意取),
在这里插入图片描述
然后点击下一步,直到完成,完成之后,打开 DPHelper.h 文件

#ifndef DBHELPER_H
#define DBHELPER_H

#include <QSqlDatabase>

class DBHelper
{
public:
    //向外界公开一个“获取唯一可用的对象”的成员函数
    static DBHelper* getInstance();

private:
    //创建一个 QSqlDatabase 的对象 db,之后要在构造函数中对 db 对象进行初始化
    QSqlDatabase db;
    static DBHelper* Instance ;
    //因为是单例模式,所以让构造函数为 private,这样该类就不会被实例化
    DBHelper();
};

#endif // DBHELPER_H

在 DPHelper.cpp 中,

#include "DBHelper.h"

DBHelper* DBHelper::Instance=0;

DBHelper* DBHelper::getInstance()
{
    if(Instance==0)
        Instance =new DBHelper();
    return Instance;
}

DBHelper::DBHelper()
{
    //在构造函数中对 db 对象进行初始化
    db = QSqlDatabase::addDatabase("QSQLITE");
}

void DBHelper::createConnection()
{
    //我们需要指定数据库文件
    db.setDatabaseName("tec.db");
    db.open();
}

void DBHelper::destoryConnection()
{
    db.close();
    db.removeDatabase("stu.db");
}

这样就将这个单例给实现了。

那么,在这个单例过程之中,我们又希望通过单例的对象来对这个 db 对象进行创建数据库文件、打开数据库文件和关闭数据库文件的操作。所以要在 DPHelper 类中再提供相关的接口。

在 main.cpp 中,我们首先来包含一下我们创建这个类的头文件 #include “DBHelper.h”。

然后,调用接口来实现数据库的连接和断开。

#include "mainwindow.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include "DBHelper.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    DBHelper* helper = DBHelper::getInstance();

    helper->createConnection();
    helper->destoryConnection();

    MainWindow w;
    w.show();
    return a.exec();
}

运行代码,如下图所示,数据库文件 tec.db 就被创建出来了。
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:11:15  更:2022-02-16 13:13:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:32:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码