在Qt上搭载数据库,可以考虑Qt自带的sqlite数据库,在项目文件pro中应先加入sql文件,如图所示
#-------------------------------------------------
#
# Project created by QtCreator 2020-10-12T10:13:36
#
#-------------------------------------------------
QT += core gui sql
然后在头文件中加入引用的类,以及生成数据库对象及表对象,数据库对象中的参数QSQLITE为驱动
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_add_clicked();
void on_pushButton_display_clicked();
void on_pushButton_delete_clicked();
void on_pushButton_repair_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QSqlQuery query;
};
#endif // MAINWINDOW_H
其余部分余下所示,实际上就是实现数据库的增删查改
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//连接数据库
db.setDatabaseName("student");
//打开数据库
if(!db.open())
ui->textBrowser->setText("打开失败\n");
else {
ui->textBrowser->setText("打开成功\n");
}
//创建表
query.exec("create table student(id int primary key,name varchar,grade varchar)");
}
MainWindow::~MainWindow()
{
delete ui;
}
//添加元素
void MainWindow::on_pushButton_add_clicked()
{
QString str=QString("insert into student values('%1','%2','%3')").arg(ui->lineEdit_ID->text().toInt()).
arg(ui->lineEdit_name->text()).arg(ui->lineEdit_grade->text());
query.exec(str);
}
//查询现有元素
void MainWindow::on_pushButton_display_clicked()
{
QString str=ui->textBrowser->toPlainText();
query.exec("select id,name,grade from student where id >= 0");
while(query.next())
{
QString id=query.value(0).toString();
QString name=query.value(1).toString();
QString grade=query.value(2).toString();
qDebug()<<id<<name<<grade;
str=str+id+'\t'+name+'\t'+grade+'\n';
}
ui->textBrowser->setText(str);
}
//删除指定元素
void MainWindow::on_pushButton_delete_clicked()
{
QString str=QString("delete from student where id='%1'").arg(ui->lineEdit_ID->text().toInt());
query.exec(str);
}
//修改元素
void MainWindow::on_pushButton_repair_clicked()
{
QString str=QString("update student set name='%1',grade='%2' where id='%3'").arg(ui->lineEdit_name->text()).
arg(ui->lineEdit_grade->text()).arg(ui->lineEdit_ID->text().toInt());
query.exec(str);
}
具体的ui界面及调试效果如下所示,数据库中的数据加入后就会保存,即使关闭程序后也不会被清空,重新查询依然存在,各位小伙伴们可以试试喔