您的位置:首页 > 编程语言 > Qt开发

#小白来瞅瞅#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();
}

以上就是入门代码了,慢慢琢磨透了就勉强能借点 “数据库” 的法力了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: