#小白来瞅瞅#QT5.12 QSQLITE 虐心入门使用攻略
2019-03-30 15:03
344 查看
。
在接触QT一段时间后,开始尝试使用QT的自带数据库来写程序
小白不要纠结使用MYSQL还是SQLITE
反正我是从MYSQL的大坑不得步爬到QT自带的SQLITE的,mysql配置起来太麻烦了
工具:QT5.12 x86
↓ ↓ ↓ ↓ 话不多说看代码 ↓ ↓ ↓ ↓
<widget.h>
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include "sqldata.h" namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void on_btn_add_clicked(); void on_btn_del_clicked(); void on_btn_update_clicked(); void on_btn_find_clicked(); void on_btn_close_clicked(); private: Ui::Widget *ui; SQLData *mdatabase; }; #endif // WIDGET_H
<sqldata.h>
#include <QObject> #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError> #include <QDebug> struct Stu{ char name[50]; int id; }; class SQLData:public QObject { Q_OBJECT public: SQLData();`在这里插入代码片` ~SQLData(); void initSQLDatabase();//初始化数据库 void createSQLDatatable();//创建表 void addSQLInfo(Stu &stu);//增 void removeSQLInfo(Stu &stu);//删 void modifySQLInfo(Stu &stu);//改 QString searchSQLInfo(int id);//查 void close(); private: QSqlDatabase database; QSqlQuery sql_query; }; #endif // SQLDATA_H
<sqldata.cpp>
#include "sqldata.h" SQLData::SQLData():QObject() { } SQLData::~SQLData() { } //初始化数据库 void SQLData::initSQLDatabase() { //1. 创建一个SQLITE数据库 database = QSqlDatabase::addDatabase("QSQLITE"); //2. 设置数据的参数 database.setDatabaseName("stu.db"); database.setUserName("root"); database.setPassword("123456"); //3. 打开数据库 if(!database.open()) { qDebug()<<database.lastError()<<endl; } //4. 如果成功:设置一下数据库的操作句柄 sql_query = QSqlQuery(database); } //创建表 void SQLData::createSQLDatatable() { QString create_sql = "create table stuTable " "(ID INTEGER primary key AUTOINCREMENT ," "NAME varchar(30)," "STUID int)"; sql_query.prepare(create_sql);//准备好一条SQL语句,没执行 if(!sql_query.exec()) qDebug()<<sql_query.lastError()<<endl; else qDebug()<<"table created"<<endl; } //增 void SQLData::addSQLInfo(Stu &stu) { QString insert_sql = QString::asprintf("insert into stuTable (NAME,STUID)" "values('%s','%d')" ,stu.name,stu.id); sql_query.prepare(insert_sql);//准备好一条SQL语句,没执行 if(!sql_query.exec()) qDebug()<<sql_query.lastError()<<endl; else qDebug()<<"inserted"<<endl; } //删 void SQLData::removeSQLInfo(Stu &stu) { QString delete_sql = QString::asprintf("delete from stuTable where STUID='%d'", stu.id); sql_query.prepare(delete_sql);//准备好一条SQL语句,没执行 if(!sql_query.exec()) qDebug()<<sql_query.lastError()<<endl; else qDebug()<<"deleted"<<endl; } //改 void SQLData::modifySQLInfo(Stu &stu) { QString update_sql = QString::asprintf("update stuTable set NAME='%s' where STUID='%d'", stu.name,stu.id); sql_query.prepare(update_sql);//准备好一条SQL语句,没执行 if(!sql_query.exec()) qDebug()<<sql_query.lastError()<<endl; else qDebug()<<"updated"<<endl; } //查 QString SQLData::searchSQLInfo(int id) { QString res; QString select_sql = QString::asprintf("select * from stuTable where STUID='%d'",id); sql_query.prepare(select_sql);//准备好一条SQL语句,没执行 if(!sql_query.exec()) qDebug()<<sql_query.lastError()<<endl; else//查询成功 { while(sql_query.next()) { qDebug()<<"sql_result:id = "<<sql_query.value("STUID").toInt(); res = sql_query.value("NAME").toString(); qDebug()<<res<<endl; } } return res; } void SQLData::close() { database.close(); qDebug() << "close successful .." << endl; }
<widget.cpp>
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); mdatabase = new SQLData; mdatabase->initSQLDatabase(); mdatabase->createSQLDatatable(); } Widget::~Widget() { delete ui; } void Widget::on_btn_add_clicked() { Stu stu; strcpy(stu.name,ui->line_name->text().toStdString().c_str()); stu.id = ui->line_id->text().toInt(); mdatabase->addSQLInfo(stu); } void Widget::on_btn_del_clicked() { Stu stu; strcpy(stu.name,ui->line_name->text().toStdString().c_str()); stu.id = ui->line_id->text().toInt(); mdatabase->removeSQLInfo(stu); } void Widget::on_btn_update_clicked() { Stu stu; strcpy(stu.name,ui->line_name->text().toStdString().c_str()); stu.id = ui->line_id->text().toInt(); mdatabase->modifySQLInfo(stu); } void Widget::on_btn_find_clicked() { int id = ui->line_id->text().toInt(); QString res = mdatabase->searchSQLInfo(id); ui->line_name->setText(res); } void Widget::on_btn_close_clicked() { mdatabase->close(); }
以上就是入门代码了,慢慢琢磨透了就勉强能借点 “数据库” 的法力了。
相关文章推荐
- Axure RP使用攻略--入门级(三)元件的触发事件
- 《王者荣耀》unity安装及使用的小白零基础入门
- T-SQL入门攻略之4-通配符使用
- Axure RP使用攻略--入门级(四)条件生成器
- 【狂人小白】轻量级验证框架 Validation.FO 的入门与使用
- 针对小白的Python入门教程——Python使用说明书
- 从入门到进阶:Google Play完整使用攻略
- Axure RP使用攻略--入门级(五)系统函数与变量
- 从无到有看文档-----Android中ORMLite框架入门使用指南(为了小白)
- Axure RP使用攻略--入门级(六)关于Axure rp触发事件中IF和ELSE IF的使用说明
- Github入门级使用攻略
- 使用Android Studio 进行cocos2d-x开发入门全攻略(教程)
- 机器学习工具之jupyter Notebook入门超全使用攻略
- Axure RP使用攻略--入门级(七)之axure元件使用思路的补充
- 小白配置使用freeline入门
- unity5.3.4 cloth系统使用方法(1)--小白入门
- 王者荣耀是怎样炼成的(二)《王者荣耀》unity安装及使用的小白零基础入门
- Axure RP使用攻略--入门级(一)
- 小白入门---百度地图JavaScript API 类使用
- 小白入门---BMOB后端云的使用