Qt使用MySQL例子_世界新视野

2023-04-15 10:52:54    来源:QT教程


(相关资料图)

一、说明

Qt使用MySQL,进行增删改查等操作

二、.pro

#-------------------------------------------------## Project created by QtCreator 2022-04-15T10:51:50##-------------------------------------------------QT += core guiQT += sqlgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = MySqlDemoTEMPLATE = app# The following define makes your compiler emit warnings if you use# any feature of Qt which has been marked as deprecated (the exact warnings# depend on your compiler). Please consult the documentation of the# deprecated API in order to know how to port your code away from it.DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if you use deprecated APIs.# In order to do so, uncomment the following line.# You can also select to disable deprecated APIs only up to a certain version of Qt.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0CONFIG += c++11SOURCES += \main.cpp \MainWindow.cppHEADERS += \MainWindow.hFORMS += \MainWindow.ui# Default rules for deployment.qnx: target.path = /tmp/${TARGET}/binelse: unix:!android: target.path = /opt/${TARGET}/bin!isEmpty(target.path): INSTALLS += target

三、main.cpp

#include "MainWindow.h"#include int main(int argc, char *argv[]){QApplication a(argc, argv);MainWindow w;w.show();return a.exec();}

四、MainWindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void connectDB();void on_showDBButton_clicked();void on_addDBButton_clicked();void on_deleteNameButton_clicked();void on_deleteAgeButton_clicked();void on_deleteScoreButton_clicked();void on_findNameButton_clicked();void on_findAgeButton_clicked();void on_findScoreButton_clicked();void on_changeNameButton_clicked();void on_changeAgeButton_clicked();void on_changeScoreButton_clicked();void textEditShow(QString str);private:Ui::MainWindow *ui;};#endif // MAINWINDOW_H

五、MainWindow.cpp.cpp

#include "MainWindow.h"#include "ui_MainWindow.h"#include #include #include #include #include MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);connectDB();}MainWindow::~MainWindow(){delete ui;}//连接数据库void MainWindow::connectDB(){QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("127.0.0.1"); //数据库服务器IP,本地服务器db.setPort(3306); //端口号db.setDatabaseName("test"); //数据库名db.setUserName("root"); //用户名db.setPassword(""); //密码bool ok = db.open();if (!ok){qDebug()<<"open sql error:" << db.lastError();}//创建表QSqlQuery query;query.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int)ENGINE=INNODB;");//删除整个表//query.exec("drop table student");}//显示所有void MainWindow::on_showDBButton_clicked(){//遍历QSqlQuery query;bool ok = query.exec("select *from student");if (!ok){QString str = QString("show error:%1").arg(query.lastError().text());textEditShow(str);return;}ui->textEdit->append("******************************");while(query.next()) //遍历完为false{//方式1:以下标ui->textEdit->append(QString("%1 姓名:%2 年龄:%3 成绩:%4").arg(query.value(0).toInt()).arg(query.value(1).toString()).arg(query.value(2).toInt()).arg(query.value(3).toInt()));//方式2:以字段//qDebug()<< query.value("id").toInt()<< query.value("name").toString()//<< query.value("age").toInt()<< query.value("score").toInt();}}//添加void MainWindow::on_addDBButton_clicked(){QSqlQuery query;//单行插入// 在创建表时id设置了auto_increment,所以插入时加不加id都可以//bool ok = query.exec("insert into student(id, name, age, score) values(1, "张三", 18, 80)");QString str = QString("insert into student(name, age, score) values("%1", %2, %3)").arg(ui->nameLineEdit->text()).arg(ui->ageLineEdit->text()).arg(ui->scoreLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("add error:%1").arg(query.lastError().text());textEditShow(str);}else{on_showDBButton_clicked();}//多行插入// query.prepare("insert into student(name, age, score) values(?,?,?)"); //?是占位符// QVariantList name;// QVariantList age;// QVariantList score;// name << "李四" << "王五" << "赵六";// age << 19 << 20 << 21;// score << 85 << 90 << 95;// //按顺序给字段绑定相应的值// query.addBindValue(name);// query.addBindValue(age);// query.addBindValue(score);// //执行预处理命令// ok = query.execBatch();// if (!ok)// {// qDebug()<<"execBatch error:" << query.lastError();// }}//根据姓名删除void MainWindow::on_deleteNameButton_clicked(){QSqlQuery query;//删除某一行QString str = QString("delete from student where name="%1"").arg(ui->nameLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("delete error:%1").arg(query.lastError().text());textEditShow(str);}else{on_showDBButton_clicked();}}//根据年龄删除void MainWindow::on_deleteAgeButton_clicked(){QSqlQuery query;//删除某一行QString str = QString("delete from student where age="%1"").arg(ui->ageLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("delete error:%1").arg(query.lastError().text());textEditShow(str);}else{on_showDBButton_clicked();}}//根据成绩删除void MainWindow::on_deleteScoreButton_clicked(){QSqlQuery query;//删除某一行QString str = QString("delete from student where score="%1"").arg(ui->scoreLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("delete error:%1").arg(query.lastError().text());textEditShow(str);}else{on_showDBButton_clicked();}}//根据姓名查找void MainWindow::on_findNameButton_clicked(){QSqlQuery query;//查询QString str = QString("select id,age,score from student where name="%1"").arg(ui->nameLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("find error:%1").arg(query.lastError().text());textEditShow(str);}else{if(query.size() == 0){textEditShow("没有找到");return;}ui->textEdit->append("******************************");while(query.next()) //遍历完为false{ui->textEdit->append(QString("%1 id:%2 年龄:%3 成绩:%4").arg(ui->nameLineEdit->text()).arg(query.value(0).toInt()).arg(query.value(1).toInt()).arg(query.value(2).toInt()));}}}//根据年龄查找void MainWindow::on_findAgeButton_clicked(){QSqlQuery query;//查询QString str = QString("select id,name,score from student where age="%1"").arg(ui->ageLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("find error:%1").arg(query.lastError().text());textEditShow(str);}else{if(query.size() == 0){textEditShow("没有找到");return;}ui->textEdit->append("******************************");while(query.next()) //遍历完为false{ui->textEdit->append(QString("%1 id:%2 姓名:%3 成绩:%4").arg(ui->ageLineEdit->text()).arg(query.value(0).toInt()).arg(query.value(1).toString()).arg(query.value(2).toInt()));}}}//根据成绩查找void MainWindow::on_findScoreButton_clicked(){QSqlQuery query;//查询QString str = QString("select id,name,age from student where score="%1"").arg(ui->scoreLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("find error:%1").arg(query.lastError().text());textEditShow(str);}else{if(query.size() == 0){textEditShow("没有找到");return;}ui->textEdit->append("******************************");while(query.next()) //遍历完为false{ui->textEdit->append(QString("%1 id:%2 姓名:%3 年龄:%4").arg(ui->scoreLineEdit->text()).arg(query.value(0).toInt()).arg(query.value(1).toString()).arg(query.value(2).toInt()));}}}//根据年龄和成绩,修改姓名void MainWindow::on_changeNameButton_clicked(){//修改QSqlQuery query;if(!ui->ageLineEdit->text().isEmpty() && !ui->scoreLineEdit->text().isEmpty()){QString str = QString("update student set name="%1" where age=%2 and score=%3").arg(ui->nameLineEdit->text()).arg(ui->ageLineEdit->text()).arg(ui->scoreLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("update error:%1").arg(query.lastError().text());textEditShow(str);}else{on_showDBButton_clicked();}}else{QString str = QString("年龄和成绩不能为空");textEditShow(str);}}//根据姓名和成绩,修改年龄void MainWindow::on_changeAgeButton_clicked(){QSqlQuery query;if(!ui->nameLineEdit->text().isEmpty() && !ui->scoreLineEdit->text().isEmpty()){QString str = QString("update student set age=%1 where name="%2" and score=%3").arg(ui->ageLineEdit->text()).arg(ui->nameLineEdit->text()).arg(ui->scoreLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("update error:%1").arg(query.lastError().text());textEditShow(str);}else{on_showDBButton_clicked();}}else{QString str = QString("姓名和年龄不能为空");textEditShow(str);}}//根据姓名和年龄,修改成绩void MainWindow::on_changeScoreButton_clicked(){QSqlQuery query;if(!ui->nameLineEdit->text().isEmpty() && !ui->ageLineEdit->text().isEmpty()){QString str = QString("update student set score=%1 where name="%2" and age=%3").arg(ui->scoreLineEdit->text()).arg(ui->nameLineEdit->text()).arg(ui->ageLineEdit->text());bool ok = query.exec(str);if (!ok){QString str = QString("update error:%1").arg(query.lastError().text());textEditShow(str);}else{on_showDBButton_clicked();}}else{QString str = QString("姓名和年龄不能为空");textEditShow(str);}}//显示提示信息void MainWindow::textEditShow(QString str){ui->textEdit->append("******************************");ui->textEdit->append(str);}

六、MainWindow.ui

【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】

点击这里:

关键词:

X 关闭

X 关闭