pro文件:QT += core gui sql
widget.ui

main.cpp
- #include "widget.h"
- #include
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Widget w("./student.db"); //传入文件名
- w.show();
-
- return a.exec();
- }
widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include
- #include
//数据库连接 - #include
//执行SQL语句 -
- namespace Ui {
- class Widget;
- }
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit Widget(QString filename, QWidget *parent = 0); //数据库文件名,存储数据库的操作
- ~Widget();
-
- void showInfo();
- void clearInput();
-
- private slots:
-
- void on_pb_add_clicked();
-
- void on_pb_delete_clicked();
-
- void on_pb_query_clicked();
-
- void on_pb_update_clicked();
-
- private:
- Ui::Widget *ui;
- QSqlDatabase db_student; //表示数据库的连接
- QString db_file_name; //数据库文件名
-
- };
-
- #endif // WIDGET_H
widget.cpp
- #include "widget.h"
- #include "ui_widget.h"
- #include
//文件类 - #include
- #include
-
- Widget::Widget(QString filename, QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget),
- db_file_name(filename)
- {
- ui->setupUi(this);
- ui->cbb_gender->setCurrentIndex(-1);
- ui->cbb_gender->setFixedSize(224,40);
- ui->te_table_content->setReadOnly(true);
-
- QFile file(db_file_name); //要操作的文件名
-
- if(!file.exists())
- {
- //数据库文件不存在表示这个程序第一次被运行
- //连接数据库,创建数据库表,生成数据库文件
- //"QSQLITE"表示创建的是基于sqlite数据库的连接
- db_student = QSqlDatabase::addDatabase("QSQLITE");
-
- //设置数据库文件的名字
- db_student.setDatabaseName(db_file_name);
-
- //打开数据库
- if(!db_student.open())
- {
- qDebug() << "打开数据库失败1";
- }
- else
- {
- qDebug() << "打开数据库成功1";
- }
-
- //QSqlQuery用于SQL语句的执行,对返回结果的使用
- //要指定使用的数据库的连接 db_student
- QSqlQuery sql_query(db_student);
-
- //创建数据库表
- QString str_query = "create table Student(id varchar(64) PRIMARY KEY,name varchar(64),gender varchar(64),age int)";
-
- //执行SQL语句
- if(!sql_query.exec(str_query))
- {
- qDebug() << str_query <<"failed";
- qDebug() << sql_query.lastError().text();
- }
-
- //向数据库表Student插入数据(方式一)
- str_query = "insert into Student values('2310060001','张三','男',15)";
- if(!sql_query.exec(str_query))
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text();
- }
-
- //向数据库表Student插入数据(方式二)
- str_query = "insert into Student values(?,?,?,?)";
-
- //准备SQL语句
- sql_query.prepare(str_query);
- //绑定待定的数据,取代SQL语句里的?
- sql_query.addBindValue("2310060002");
- sql_query.addBindValue("李四");
- sql_query.addBindValue("男");
- sql_query.addBindValue(16);
- if(!sql_query.exec())
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text();
- }
-
- //向数据库表Student插入数据(方式三)
- str_query = "insert into Student values(:id,:name,:gender,:age)";
- sql_query.prepare(str_query);
- //绑定待定的数据
- sql_query.bindValue(":id","2310060003");
- sql_query.bindValue(":name","王五");
- sql_query.bindValue(":gender","女");
- sql_query.bindValue(":age",20);
- if(!sql_query.exec())
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text(); //打印具体错误
- }
- }
- else
- {
- db_student = QSqlDatabase::addDatabase("QSQLITE");
-
- //设置数据库文件的名字
- db_student.setDatabaseName(db_file_name);
-
- //打开数据库
- if(!db_student.open())
- {
- qDebug() << "打开数据库失败2";
- }
- else
- {
- qDebug() << "打开数据库成功2";
- }
- }
-
- // 显示Student表中所有的记录
- showInfo();
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
-
- //更新信息显示
- void Widget::showInfo()
- {
- QSqlQuery sql_query(db_student); //执行QSL语句
-
- QString str_query = "select * from Student";
-
- if(!sql_query.exec(str_query))
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text();
- }
-
- ui->te_table_content->clear();
-
- while(sql_query.next()) //获得当前的一整条记录
- {
- QString s1;
- for(int i = 0;i < 4;i++) //id,name,gender,age
- {
- s1 += sql_query.value(i).toString(); //获得一条记录中的第i个表项,0 base
- s1 += " ";
- }
-
- ui->te_table_content->append(s1);
- }
- }
-
-
- //清空
- void Widget::clearInput()
- {
- ui->le_id->clear();
- ui->le_name->clear();
- ui->cbb_gender->setCurrentIndex(-1);
- ui->le_age->clear();
- }
-
- //新增
- void Widget::on_pb_add_clicked()
- {
- QSqlQuery sql_query(db_student);
-
- QString str_query = "insert into Student values(?,?,?,?)"; //id,name,gender,age
-
- //准备SQL语句
- sql_query.prepare(str_query);
-
- //绑定待定的数据,取代SQL语句里的?
- sql_query.addBindValue(ui->le_id->text());
- sql_query.addBindValue(ui->le_name->text());
- sql_query.addBindValue(ui->cbb_gender->currentText());
- sql_query.addBindValue(ui->le_age->text().toInt());
-
- if(!sql_query.exec())
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text();
- }
-
- clearInput();
- showInfo();
- }
-
- //删除
- void Widget::on_pb_delete_clicked()
- {
-
- QSqlQuery sql_query(db_student);
-
- QString str_query = "delete from Student where id = :id";
-
- sql_query.prepare(str_query);
-
- sql_query.bindValue(":id",ui->le_id->text());
-
- if(!sql_query.exec())
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text();
- }
-
- clearInput();
- showInfo();
- }
-
- //查询
- void Widget::on_pb_query_clicked()
- {
- QSqlQuery sql_query(db_student); //操作的数据库
-
- QString str_query = "select * from Student where id = :id";
-
- sql_query.prepare(str_query);
-
- sql_query.bindValue(":id",ui->le_id->text());
-
- if(!sql_query.exec())
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text();
- }
-
- while(sql_query.next()) //获得当前的一整条记录 id,name,gender,age
- {
- ui->le_name->setText(sql_query.value(1).toString());
- ui->cbb_gender->setCurrentText(sql_query.value(2).toString());
- ui->le_age->setText(sql_query.value(3).toString());
- }
- }
-
- //修改
- void Widget::on_pb_update_clicked()
- {
- QSqlQuery sql_query(db_student);
-
- QString str_query = "update Student set name = ?,gender = ?,age = ? where id = ?";
-
- sql_query.prepare(str_query);
-
- sql_query.addBindValue(ui->le_name->text());
- sql_query.addBindValue(ui->cbb_gender->currentText());
- sql_query.addBindValue(ui->le_age->text().toInt());
- sql_query.addBindValue(ui->le_id->text());
-
- if(!sql_query.exec())
- {
- qDebug() << str_query << "failed";
- qDebug() << sql_query.lastError().text();
- }
-
- clearInput();
- showInfo();
- }
结果


新增


删除


查询


修改


