c++ Qt 数据库操作-连接数据库

时间:2024-02-17 08:44:03

主要通过QSqlDatabase类进行连接。相关函数:

1)获得一个数据库连接对象

// 获得一个数据库连接对象
// 参数为数据库类型,详见本章第一节表格(区分大小写)
// 返回值为连接对象
#include <QSqlDatabase>
QSqlDatabase QSqlDatabase:: addDatabase(const QString & type)[static]

2)设置数据库名称

// 设置数据库名称
// 参数因不同的数据库表示不同的涵义。对于SQLite,此函数表示数据库文件名。此文件会在项目中构建目录中生成
void QSqlDatabase:: setDatabaseName(const QString & name)

3)打开数据库连接

// 打开数据库连接
// 返回值为连接打开的结果,如果打开失败,可以通过lastError函数获取错误信息
bool QSqlDatabase:: open()

4)返回上一次的错误信息封装类

错误信息类为QSqlError

// 返回上一次的错误信息封装类
#include <QSqlError>
QSqlError QSqlDatabase:: lastError() const

5)从QSqlError对象中提取错误信息文本

// 从QSqlError对象中提取错误信息文本
#include <QSqlError>
QString QSqlError:: text() const

6)返回数据库连接的打开状态

// 返回数据库连接的打开状态
bool QSqlDatabase:: isOpen() const

7)关闭数据库连接

// 关闭数据库连接
void QSqlDatabase:: close()

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    //创建按钮组
    group = new QButtonGroup(this);
    //添加按钮对象
    group->addButton(ui->pushButtonInsert,1);
    group->addButton(ui->pushButtonDelete,2);
    group->addButton(ui->pushButtonUpdate,3);
    group->addButton(ui->pushButtonSelect,4);
    //按钮组连接
connect(group,SIGNAL(buttonClicked(int)),this,SLOT(btnClickedSlots(int)));
    connectD2B();
}
Dialog::~Dialog()
{
    //检查数据库状态
    if(db.isOpen())
    {
        //关闭数据库连接
        db.close();
    }
    delete ui;
}
//连接数据库
void Dialog::connectD2B()
{
    //获取数据库连接对象
    db = QSqlDatabase::addDatabase("QSQLITE");
    //设置数据库名称
    db.setDatabaseName("book_management.db");
    //打开数据库连接
    bool ret = db.open();
    if(ret == true)
    {
        qDebug()<<"打开成功";
    }
    else
    {
        qDebug()<<"打开失败";
        //返回最近错误信息封装类
        QSqlError errorInfo = db.lastError();
        //从错误信息类提取错误信息
        QString text = errorInfo.text();
        //弹窗显示错误信息
        QMessageBox::critical(this,"错误",text);
    }
}
void Dialog::btnClickedSlots(int id)
{
    if(id == 1)
    {
        qDebug()<<"增加";
    }
    else if(id == 2)
    {
        qDebug()<<"删除";
    }
    else if(id == 3)
    {
        qDebug()<<"修改";
    }
    else if(id == 4)
    {
        qDebug()<<"查询";
    }
    else
    {
        qDebug()<<"错误";
    }
}