概述
前言
MySQL的重要性
Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。
一、简介介绍Qt与MySql的联系
基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。
在此基础上,我们在做Ubuntu嵌入式开发,更好的可以选择MysQl服务器。
二、完成Qt与MySql服务的连接需要满足
- 安装MySql并设置环境
- 安装Qt并设置适用与MySql的环境
- 如果Qt报错:QMYSQL driver not loaded
1、 解决方法是把MySql的 libmysql.dll拷贝到相对应的编译器中
2、 注意:QT选用的Windows32位要对应32位的 libmysql.dll。
3、注意:QT选用的Windows64位要对应64位的 libmysql.dll。
4、注意:需要在工程文件中的xxxx.pro中添加 QT += sql 如下图所示
5、注意:选择C:mysql-5.7.37-win32lib中的libmysql.dll拷贝到 C:QtQt5.9.05.9mingw53_32bin中 (记得对应是32位还是64位的 一定要对应)libmysql.dll。
Qt源代码mainwindow.h
代码如下(示例):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMainWindow>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QDebug>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QGridLayout>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
public:
void myLayout();
private slots:
void button_1_clicked();
void button_2_clicked();
void button_3_clicked();
void button_4_clicked();
protected:
QLabel *Label_1;
QLabel *Label_2;
QLabel *Label_3;
QLabel *Label_4;
QLineEdit *Line_1;
QLineEdit *Line_2;
QLineEdit *Line_3;
QLineEdit *Line_4;
QPushButton *Button_1;
QPushButton *Button_2;
QPushButton *Button_3;
QPushButton *Button_4;
};
#endif // MAINWINDOW_H
Qt源代码main.cpp
代码如下(示例):
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
w.setFixedSize(300,200);
w.setWindowTitle("MySql连接工具");
w.myLayout();
return a.exec();
}
Qt源代码mainwindow.cpp
代码如下(示例):
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::myLayout()
{
QWidget *centerWindow = new QWidget;
this->setCentralWidget(centerWindow);
Button_1 = new QPushButton("连接MySql");
Button_2 = new QPushButton("添加数据");
Button_3 = new QPushButton("更新数据");
Button_4 = new QPushButton("删除数据");
Line_1 = new QLineEdit;
Line_2 = new QLineEdit;
Line_3 = new QLineEdit;
Line_4 = new QLineEdit;
Label_1 = new QLabel("id");
Label_2 = new QLabel("name");
Label_3 = new QLabel("age");
Label_4 = new QLabel("score");
Button_1->setMinimumHeight(50);
Button_2->setMinimumHeight(50);
Button_3->setMinimumHeight(50);
Button_4->setMinimumHeight(50);
connect(Button_1,SIGNAL(clicked(bool)),this,SLOT(button_1_clicked()));
connect(Button_2,SIGNAL(clicked(bool)),this,SLOT(button_2_clicked()));
connect(Button_3,SIGNAL(clicked(bool)),this,SLOT(button_3_clicked()));
connect(Button_4,SIGNAL(clicked(bool)),this,SLOT(button_4_clicked()));
QGridLayout *layout = new QGridLayout;
layout->addWidget(Line_1,0,1,1,3,Qt::Alignment());
layout->addWidget(Line_2,1,1,1,3,Qt::Alignment());
layout->addWidget(Line_3,2,1,1,3,Qt::Alignment());
layout->addWidget(Line_4,3,1,1,3,Qt::Alignment());
layout->addWidget(Button_1,4,0,Qt::Alignment());
layout->addWidget(Button_2,4,1,Qt::Alignment());
layout->addWidget(Button_3,4,2,Qt::Alignment());
layout->addWidget(Button_4,4,3,Qt::Alignment());
layout->addWidget(Label_1,0,0,Qt::Alignment());
layout->addWidget(Label_2,1,0,Qt::Alignment());
layout->addWidget(Label_3,2,0,Qt::Alignment());
layout->addWidget(Label_4,3,0,Qt::Alignment());
layout->setMargin(12);
centerWindow->setLayout(layout);
}
void MainWindow::button_1_clicked()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");//数据库服务器ip
db.setUserName("root");//数据库用户名
db.setPassword("123456");//数据库密码
db.setDatabaseName("mydata");//使用哪个数据库
//端口号就使用默认的3306吧,因为在本地
if( !db.open() )//打开数据库,如果返回false表示打开失败
{
QMessageBox::warning(this,"错误",db.lastError().text() );//打开失败,显示错误信息
return;
}else
{
QMessageBox::warning(this,"恭喜~~~","Mysql连接成功!");
}
QSqlQuery query;
QString sql = "create table student(id int primary key auto_increment,name varchar(255),age int,score int);";
query.exec(sql);
}
void MainWindow::button_2_clicked()
{
int id = Line_1->text().toInt();
QString name = Line_2->text();
int age = Line_3->text().toInt();
int score = Line_4->text().toInt();
QString sql = QString("insert into student(id,name,age,score) values('%1','%2','%3','%4')").arg(id).arg(name).arg(age).arg(score);
QSqlQuery query;
query.exec(sql);
}
void MainWindow::button_3_clicked()
{
int id = Line_1->text().toInt();
QString name = Line_2->text();
int age = Line_3->text().toInt();
int score = Line_4->text().toInt();
QString sql = QString("update student set id='%1',name='%2',age='%3',score='%4' where id='%5'").arg(id).arg(name).arg(age).arg(score).arg(id);
QSqlQuery query;
query.exec(sql);
}
void MainWindow::button_4_clicked()
{
int id = Line_1->text().toInt();
QString sql = QString("delete from student where id = '%1'").arg(id);
QSqlQuery query;
query.exec(sql);
}
效果实图
操作方法
- 将代码拷贝到工程中。
- 下载工程包直接导入。
工程包免费下载链接
导入包方法如下图所示
MySql环境设置并验证工具增加、删除数据功能。
MySql环境设置及qt工具验证图解链接
最后
以上就是谦让眼睛为你收集整理的使用Qt连接MySql并创建表号、写入数据、删除数据前言一、简介介绍Qt与MySql的联系二、完成Qt与MySql服务的连接需要满足效果实图操作方法导入包方法如下图所示MySql环境设置并验证工具增加、删除数据功能。的全部内容,希望文章能够帮你解决使用Qt连接MySql并创建表号、写入数据、删除数据前言一、简介介绍Qt与MySql的联系二、完成Qt与MySql服务的连接需要满足效果实图操作方法导入包方法如下图所示MySql环境设置并验证工具增加、删除数据功能。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复