文章目录:
一:效果演示
效果图◕‿◕✌✌✌
二:实现思路
只是实现了插入数据操作,其他操作一样的在此基础上
1.设计好界面、连接好数据库 2.创建数据库和QT链接QSqlDatabase sqldb 3..调用函数创建且打开数据库CreateDatabaseFunc:创建SQLLite数据库 添加数据库驱动 设置数据库名称 打开此数据库是否成功 4.调用函数创建数据表CreateTableFunc 创建sql语句 执行sql语句 执行查询操作QueryTableFunc 存储结果集QSqlQueryModel sqlmodel
三:代码实现
mainwindow.ui
Student.pro
QT += core gui QT +=sql greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++17 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target RESOURCES += \ images.qrc
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QSqlDatabase>//连接和创建 #include <QSqlQuery> //专用于DML数据库操作语言、DDL数据库定义语言 #include <QSqlQueryModel> //存储结果集 #include <QSqlError> #include <QDebug> #include <QMessageBox> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_pushButtonSort_clicked(); void on_pushButton_INSERT_clicked(); void on_pushButton_DELETE_clicked(); void on_pushButton_UPDATE_clicked(); void on_pushButton_SEARCH_clicked(); private://自定义函数 void CreateDatabaseFunc(); //创建SQLite数据库 void CreateTableFunc(); //创建数据库表 void QueryTableFunc(); //执行查询操作 QSqlDatabase sqldb; //创建数据库和QT链接 QSqlQueryModel sqlmodel; //存储结果集 private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //调用函数创建且打开数据库 CreateDatabaseFunc(); //调用函数创建数据表 CreateTableFunc(); } MainWindow::~MainWindow() { delete ui; } //创建SQLLite数据库 void MainWindow::CreateDatabaseFunc(){ //1.添加数据库驱动 sqldb = QSqlDatabase::addDatabase("QSQLITE"); //2.设置数据库名称 sqldb.setDatabaseName("studentmis.db"); //3.打开此数据库是否成功 if(sqldb.open()==true){ QMessageBox::information(0,"正确","恭喜你,数据库打开成功!",QMessageBox::Ok); }else{ QMessageBox::critical(0,"错误","数据库打开失败,请重新检查!",QMessageBox::Ok); } } //创建数据库表 void MainWindow::CreateTableFunc(){ QSqlQuery createquery; //创建sql语句 QString strsql=QString("create table student(" "id int primary key not null," "name text not null," "score real not null)" ); //执行sql语句 if(createquery.exec(strsql)==false){ QMessageBox::critical(0,"失败","数据表创建失败,请重新检查!",QMessageBox::Ok); }else{ QMessageBox::information(0,"成功","恭喜你,数据表创建成功!",QMessageBox::Ok); } } //执行查询操作 void MainWindow::QueryTableFunc(){ } //排序 void MainWindow::on_pushButtonSort_clicked() { } //插入 void MainWindow::on_pushButton_INSERT_clicked() { QSqlQuery sqlquery; int id=ui->lineEdit_ID->text().toInt(); //学号 if(id == 0){ QMessageBox::critical(this,"失败","提示:输入错误,因为学生的学号不能为0!",QMessageBox::Ok); return ; } //姓名 QString name=ui->lineEdit_NAME->text(); if(name == ""){ QMessageBox::critical(this,"失败","提示:输入错误,因为姓名不能为空!",QMessageBox::Ok); return ; } //分数 double score=ui->lineEdit_SCORE->text().toDouble(); if(score>100 || score<0){ QMessageBox::critical(this,"失败","提示:输入错误,分数范围(0-100)!",QMessageBox::Ok); return ; } //注意student后面一个空格 QString strs=QString("insert into student " "values(%1,%2,%3)").arg(id).arg(name).arg(score); //执行sql语句 if(sqlquery.exec(strs)==false){ QMessageBox::critical(0,"失败","向数据表插入失败,请重新检查!",QMessageBox::Ok); }else{ QMessageBox::information(0,"成功","恭喜你,向数据表插入成功!",QMessageBox::Ok); } } //删除 void MainWindow::on_pushButton_DELETE_clicked() { } //更新 void MainWindow::on_pushButton_UPDATE_clicked() { } void MainWindow::on_pushButton_SEARCH_clicked() { }
main.cpp
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }