1、UI设计:
2、项目结构图
3、代码
.cpp文件入下:
#include "Student.h"
Student::Student(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
InitConnect();
CreateDB();
CreateTable();
}
void Student::InitConnect()
{
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton()));//插入
connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(on_pushButton_2()));//更新
connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(on_pushButton_3()));//删除
}
void Student::CreateDB()
{
// 添加数据库驱动库
db = QSqlDatabase::addDatabase("QSQLITE");
// 设置数据库名字(文件名)
db.setDatabaseName("student.db");
// 打开数据库
if (db.open() == true) {
qDebug() << QStringLiteral("创建/打开数据库成功!");
}
else {
qDebug() << QStringLiteral("创建/打开数据库失败!");
}
}
void Student::CreateTable()
{
QSqlQuery query;
//删除表
//if (query.exec("drop table student"))
//{
// qDebug() << "delete student";
//}
QString str = QString("CREATE TABLE student ("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"name VARCHAR(40) NOT NULL, "
" score INTEGER NOT NULL)");
// 执行sql语句失败后打印失败语句,成功则不作处理
if (query.exec(str) == false)
{
qDebug() << query.lastError();
}
model = new QSqlTableModel();
model->setTable("student");
model->select();
ui.tableView->setModel(model);
}
void Student::on_pushButton()//插入
{
QSqlQuery query;
int id = ui.lineEdit_2->text().toInt();
QString name = ui.lineEdit_3->text();
double score = ui.lineEdit->text().toDouble();
QString str = QString("INSERT INTO student "
"VALUES(%1,'%2',%3)")
.arg(id).arg(name).arg(score);
if (query.exec(str) == false)
{
qDebug() << str;
}
else
{
qDebug() << QStringLiteral("插入数据成功");
}
model->select();
ui.tableView->setModel(model);
ui.lineEdit->clear();
ui.lineEdit_2->clear();
ui.lineEdit_3->clear();
}
void Student::on_pushButton_2()//更新
{
model->select();
ui.tableView->setModel(model);
}
void Student::on_pushButton_3()//删除
{
int a=ui.tableView->currentIndex().row();
a=model->data(model->index(a, 0)).toInt();
qDebug() << a;
QSqlQuery query;
QString s = QString("delete from student where id='%1'").arg(a);
if (!query.exec(s))
{
qDebug() << s;
}
model->select();
ui.tableView->setModel(model);
}
.h文件如下:
#pragma once
#include <QtWidgets/QDialog>
#include "ui_Student.h"
#include <QtCore/QCoreApplication>
#include <QtSql>
#include<QSqlDatabase>
#include<QSqlQuery>
#include <QSqlError>
#include<QSqlTableModel>
#include <QSqlRecord>
#include<qDebug>
class Student : public QDialog
{
Q_OBJECT
public:
Student(QWidget *parent = Q_NULLPTR);
void InitConnect();
private:
Ui::StudentClass ui;
QSqlDatabase db;
QSqlTableModel *model;
private slots:
void on_pushButton();
void on_pushButton_2();
void on_pushButton_3();
private:
void CreateDB();
void CreateTable();
};
4、运行结果