1.数据库
.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_intbn_clicked(); //添加记录
void on_showbtn_clicked();//展示记录
void on_selectbtn_clicked();//查找记录
private:
Ui::Widget *ui;
QSqlDatabase db;//管理数据库
};
#endif // WIDGET_H
.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//添加数据库
if(!db.contains("stuinfo.db"))
{
db=QSqlDatabase::addDatabase("QSQLITE"); //sqlite数据库
db.setDatabaseName("stuinfo.db"); //数据库名
}
//打开数据库
if(!db.open())
{
QMessageBox::information(this,"","数据库打开失败!");
return;
}
QSqlQuery querry;
// QString sql="create table if not exists stu_info_table ("
// "id integer primary key autoincrement,"
// "numb integer,"
// "name varchar(20),"
// "sex varchar(4),"
// "score integer)";
QString sql = "create table if not exists stu_info_table(" //创建表的语句
"id integer primary key autoincrement," //主键,自动增加
"numb integer," //学号
"name varchar(20)," //姓名
"sex varchar(4)," //性别
"score integer)";
if(querry.exec(sql))
{
QMessageBox::information(this,"","数据表创建成功");
}
else
{
QMessageBox::information(this,"","数据表创建失败");
return;
}
}
Widget::~Widget()
{
delete ui;
}
//插入数据
void Widget::on_intbn_clicked()
{
//从ui获取数据
int numb=ui->idld->text().toInt();
QString name=ui->nameld->text();
QString sex=ui->sexld->text();
int score=ui->scoreld->text().toInt();
//判断数据完整性
if(numb==0||name.isEmpty()||sex.isEmpty()||score==0)
{
QMessageBox::information(this,"","请将数据填写完整");
return;
}
//插入表
QSqlQuery querry;
QString sql=QString("insert into stu_info_table(numb,name,sex,score)"
"values(%1,'%2','%3',%4)")
.arg(numb).arg(name).arg(sex).arg(score);
//执行sql语句
if(querry.exec(sql))
{
QMessageBox::information(this,"","数据表创建成功");
}else
{
QMessageBox::information(this,"","数据表创建失败");
return;
}
}
//查询数据并展示
void Widget::on_showbtn_clicked()
{
QString sql="select * from stu_Info_table";
QSqlQuery querry;
if(!querry.exec(sql))
{
QMessageBox::information(this,"","查询失败!");
return;
}
//展示到ui界面
int i=0;
while(querry.next())
{
for(int j=0;j<querry.record().count()-1;j++)
{
ui->stuWidget->setItem(i,j,new QTableWidgetItem(querry.value(j+1).toString()));
}
i++;
}
}
//按信息查找
void Widget::on_selectbtn_clicked()
{
//获取信息
int numb=ui->idld->text().toInt();
QString name=ui->nameld->text();
QString sex=ui->sexld->text();
int score=ui->scoreld->text().toInt();
//判断数据完整性
if(numb==0&&name.isEmpty()&&sex.isEmpty()&&score==0)
{
QMessageBox::information(this,"","请将数据填写完整");
return;
}
//清空
QString sql="select * from stu_Info_table";
QSqlQuery querry;
querry.exec(sql);
int i=0;
while(querry.next())
{
for(int j=0;j<querry.record().count()-1;j++)
{
ui->stuWidget->setItem(i,j,new QTableWidgetItem(""));
}
i++;
}
//按学号查找
sql=QString("select * from stu_Info_table where numb = %1 ").arg(numb);
if(!querry.exec(sql))
{
QMessageBox::information(this,"","查询失败!");
return;
}
i=0;
while(querry.next())
{
for(int j=0;j<querry.record().count()-1;j++)
{
ui->stuWidget->setItem(i,j,new QTableWidgetItem(querry.value(j+1).toString()));
}
i++;
}
}