目录
增删改查完整代码如下:.cpp文件.h文件
图示结果: 制作一个简单的数据库,可以实现数据的增、删、改、查的图书馆管理,如果在使用数据库后,没有清除记录,那么下一次打开的时候,仍然会保存上一次执行的记录操作。这就是数据库的优势所在,以下是具体的操作以及代码。
一、总结 在Qt中使用书库,执行流程为一下操作: (1)、安装驱动【Qt中的驱动一般情况下是QSQLITE】 (2)、给数据库起名字,或者也可以从组件上获取自定义数据库名字 (3)、打开数据库 (4)、创建表
二、执行增、删、改、查 将以上4步完成之后,那就可以实现数据库的增、删、改、查。我在下面代码中有详细的解释以及操作,很容易理解。
三、主要知识点 (1)、QSqlQuery:类提供了一种执行和操作SQL语句的方法 (2)、QSqlDatabase类:用来处理与数据库的连接 (3)、QSqlError类:用来输出数据库中的错误信息
增
void Library
::on_addButton_clicked()
{
QSqlQuery query
;
QString name
= ui
->addnameLE
->text();
QString price
= ui
->addpriceLE
->text();
QString author
= ui
->addAutherLE
->text();
QString nums
= ui
->addNumsLE
->text();
QString cmd
= QString("insert into library values(\"%1\",\"%2\",\"%3\",\"%4\");").arg(name
).arg(price
).arg(author
).arg(nums
);
if(!query
.exec(cmd
))
{
qDebug() << "Error to Insert Into Database " << myDatabase
.lastError();
return;
}
ui
->addNumsLE
->clear();
ui
->addpriceLE
->clear();
ui
->addnameLE
->clear();
ui
->addAutherLE
->clear();
}
删
void Library
::on_deleteButton_clicked()
{
QSqlQuery query
;
QString name
= ui
->deleleNameLE
->text();
QString author
= ui
->deleteAutherLE
->text();
QString cmd
= QString("delete from library where name =\"%1\" or author = \"%2\";").arg(name
).arg(author
);
if(!query
.exec(cmd
))
{
qDebug() << "Error to delete Database " << myDatabase
.lastError();
return;
}
ui
->deleleNameLE
->clear();
ui
->deleteAutherLE
->clear();
}
改
void Library
::on_updateButton_clicked()
{
QSqlQuery query
;
QString name
= ui
->newUPNameLE
->text();
QString price
= ui
->newUPPriceLE
->text();
QString author
= ui
->newUPAutherLE
->text();
QString nums
= ui
->newUPNumberLE
->text();
QString nameLast
= ui
->lastNameUPLE
->text();
QString priceLast
= ui
->lastPrice
->text();
QString authorLast
= ui
->lastAuther
->text();
QString numsLast
= ui
->lastNums
->text();
QString cmd
= QString("update library set name = \"%1\" , price = \"%2\" where name = \"%3\" ;").arg(nameLast
).arg(priceLast
).arg(name
);
if(!query
.exec(cmd
))
{
qDebug() << "Error Update to Database" << myDatabase
.lastError();
return;
}
ui
->lastNameUPLE
->clear();
ui
->lastNums
->clear();
ui
->lastPrice
->clear();
ui
->lastAuther
->clear();
ui
->newUPNameLE
->clear();
ui
->newUPPriceLE
->clear();
ui
->newUPAutherLE
->clear();
ui
->newUPNumberLE
->clear();
}
查
void Library
::on_serchButton_clicked()
{
QSqlQuery query
;
QString cmd
= QString("select * from library");
if(!query
.exec(cmd
))
{
qDebug() << "Error Select to Database" << myDatabase
.lastError();
return;
}
QSqlRecord record
= query
.record();
int num1
= record
.indexOf("name");
int num2
= record
.indexOf("price");
int num3
= record
.indexOf("author");
int num4
= record
.indexOf("nums");
int i
=0;
int j
=0;
while (query
.next())
{
QString info
= QString("%1 %2 %3 %4").arg(query
.value(num1
).toString()).arg(query
.value(num2
).toDouble()).arg(query
.value(num3
).toString()).arg(query
.value(num4
).toInt());
ui
->tableWidget
->setItem(i
,j
,new QTableWidgetItem(query
.value(num1
).toString()));
ui
->tableWidget
->setItem(i
,j
+1,new QTableWidgetItem(query
.value(num2
).toString()));
ui
->tableWidget
->setItem(i
,j
+2,new QTableWidgetItem(query
.value(num3
).toString()));
ui
->tableWidget
->setItem(i
,j
+3,new QTableWidgetItem(query
.value(num4
).toString()));
i
++;
}
}
完整代码如下:
.cpp文件
这是
.cpp文件
#include "library.h"
#include "ui_library.h"
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
#include <QDebug>
Library
::Library(QWidget
*parent
) :
QMainWindow(parent
),
ui(new Ui
::Library
)
{
ui
->setupUi(this);
myDatabase
= QSqlDatabase
::addDatabase("QSQLITE");
myDatabase
.setDatabaseName("library.db");
if(!myDatabase
.open())
{
qDebug() << "Error to open database" << myDatabase
.lastError();
return;
}
}
Library
::~Library()
{
delete ui
;
}
void Library
::on_createButton_clicked()
{
QSqlQuery query
;
if(!query
.exec("create table if not exists library(name text, price double ,author text, nums int);"))
{
qDebug() << "Create Table is error" << myDatabase
.lastError();
return;
}
}
void Library
::on_addButton_clicked()
{
QSqlQuery query
;
QString name
= ui
->addnameLE
->text();
QString price
= ui
->addpriceLE
->text();
QString author
= ui
->addAutherLE
->text();
QString nums
= ui
->addNumsLE
->text();
QString cmd
= QString("insert into library values(\"%1\",\"%2\",\"%3\",\"%4\");").arg(name
).arg(price
).arg(author
).arg(nums
);
if(!query
.exec(cmd
))
{
qDebug() << "Error to Insert Into Database " << myDatabase
.lastError();
return;
}
ui
->addNumsLE
->clear();
ui
->addpriceLE
->clear();
ui
->addnameLE
->clear();
ui
->addAutherLE
->clear();
}
void Library
::on_deleteButton_clicked()
{
QSqlQuery query
;
QString name
= ui
->deleleNameLE
->text();
QString author
= ui
->deleteAutherLE
->text();
QString cmd
= QString("delete from library where name =\"%1\" or author = \"%2\";").arg(name
).arg(author
);
if(!query
.exec(cmd
))
{
qDebug() << "Error to delete Database " << myDatabase
.lastError();
return;
}
ui
->deleleNameLE
->clear();
ui
->deleteAutherLE
->clear();
}
void Library
::on_updateButton_clicked()
{
QSqlQuery query
;
QString name
= ui
->newUPNameLE
->text();
QString price
= ui
->newUPPriceLE
->text();
QString author
= ui
->newUPAutherLE
->text();
QString nums
= ui
->newUPNumberLE
->text();
QString nameLast
= ui
->lastNameUPLE
->text();
QString priceLast
= ui
->lastPrice
->text();
QString authorLast
= ui
->lastAuther
->text();
QString numsLast
= ui
->lastNums
->text();
QString cmd
= QString("update library set name = \"%1\" , price = \"%2\" where name = \"%3\" ;").arg(nameLast
).arg(priceLast
).arg(name
);
if(!query
.exec(cmd
))
{
qDebug() << "Error Update to Database" << myDatabase
.lastError();
return;
}
ui
->lastNameUPLE
->clear();
ui
->lastNums
->clear();
ui
->lastPrice
->clear();
ui
->lastAuther
->clear();
ui
->newUPNameLE
->clear();
ui
->newUPPriceLE
->clear();
ui
->newUPAutherLE
->clear();
ui
->newUPNumberLE
->clear();
}
void Library
::on_serchButton_clicked()
{
QSqlQuery query
;
QString cmd
= QString("select * from library");
if(!query
.exec(cmd
))
{
qDebug() << "Error Select to Database" << myDatabase
.lastError();
return;
}
QSqlRecord record
= query
.record();
int num1
= record
.indexOf("name");
int num2
= record
.indexOf("price");
int num3
= record
.indexOf("author");
int num4
= record
.indexOf("nums");
int i
=0;
int j
=0;
while (query
.next())
{
QString info
= QString("%1 %2 %3 %4").arg(query
.value(num1
).toString()).arg(query
.value(num2
).toDouble()).arg(query
.value(num3
).toString()).arg(query
.value(num4
).toInt());
ui
->tableWidget
->setItem(i
,j
,new QTableWidgetItem(query
.value(num1
).toString()));
ui
->tableWidget
->setItem(i
,j
+1,new QTableWidgetItem(query
.value(num2
).toString()));
ui
->tableWidget
->setItem(i
,j
+2,new QTableWidgetItem(query
.value(num3
).toString()));
ui
->tableWidget
->setItem(i
,j
+3,new QTableWidgetItem(query
.value(num4
).toString()));
i
++;
}
}
void Library
::on_closeButton_clicked()
{
myDatabase
.close();
}
void Library
::on_deleteButton_2_clicked()
{
QSqlQuery query
;
QString cmd
= QString("drop table library");
query
.exec(cmd
);
}
.h文件
这是
.h文件
#ifndef LIBRARY_H
#define LIBRARY_H
#include <QMainWindow>
#include <QSqlDatabase>
namespace Ui
{
class Library;
}
class Library : public QMainWindow
{
Q_OBJECT
public:
explicit Library(QWidget
*parent
= nullptr);
~Library();
private slots
:
void on_createButton_clicked();
void on_addButton_clicked();
void on_deleteButton_clicked();
void on_updateButton_clicked();
void on_serchButton_clicked();
void on_closeButton_clicked();
void on_deleteButton_2_clicked();
private:
Ui
::Library
*ui
;
QSqlDatabase myDatabase
;
};
#endif