Qt5 Widget 连接数据库mysql

目录

准备工作

连接数据库步骤

部分代码

mainwindow.h

mainwindow.cpp


准备工作

       写者软件版本信息:Qt 5.9.1、Mysql 5.5.53,请自行安装。并将Mysql安装目录下lib里面的libmysql.dll文件复制到Qt安装目录下的bin文件中。

连接数据库步骤

  1. 建立项目dbDemo,修改dbDemo.pro文件, 增加 Qt += sql
Qt5 Widget 连接数据库mysql
项目结构图
Qt5 Widget 连接数据库mysql
标题
  1. mainwindow.h中添加 #include <QSqlDatabase> 头文件
  2. mainwindow.cpp文件添加头文件
    #include <QSqlDatabase>
    #include <QSqlError>
    #include <QSqlQuery>
    #include <QDebug>
  3. mainwindow.cpp文件中添加数据库创建语句
//创建及连接数据库MySql maze
      QSqlDatabase  db =QSqlDatabase::addDatabase("QMYSQL");//数据库类型
             db.setDatabaseName("maze");                     //数据库名
             db.setHostName("127.0.0.1");                    //主机名
             db.setPort(3306);                               //端口号
             db.setUserName("root");                         //用户名
             db.setPassword("root");                         //密码
             if (! db.open()) {
                 qDebug()<<"open database error!";
                 return;
             }
             else{
                 qDebug()<<"open database success!";
             }
   //创建表
             QSqlQuery query;
             query.exec("create table student("
                        "id int primary key auto_increment,"
                        "name varchar(255),"
                        "age int,"
                        "score int);");
             query.exec("insert into student(id ,name ,age ,score) values(20153237,'小崔',22,100);");
  1. mainwindow.ui中加入按钮,修改名称为btnList,修改文本为list
  2. 转到btnList按钮的槽clicked(),添加数据库查询显示按钮后台代码
Qt5 Widget 连接数据库mysql
跳到槽
    QSqlQuery query;
    query.exec("select * from student");
       while(query.next())
        {
            QString  id= query.value(0).toString();
            QString  name= query.value(1).toString();
            QString  age= query.value(2).toString();
            QString  score= query.value(3).toString();
            qDebug()<<id<<name<<age<<score;
        }

部分代码

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>  //数据库头文件

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_btnList_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //创建及连接数据库MySql maze
      QSqlDatabase  db =QSqlDatabase::addDatabase("QMYSQL");//数据库类型
             db.setDatabaseName("maze");                     //数据库名
             db.setHostName("127.0.0.1");                    //主机名
             db.setPort(3306);                               //端口号
             db.setUserName("root");                         //用户名
             db.setPassword("root");                         //密码
             if (! db.open()) {
                 qDebug()<<"open database error!";
                 return;
             }
             else{
                 qDebug()<<"open database success!";
             }
   //创建表
             QSqlQuery query;
             query.exec("create table student("
                        "id int primary key auto_increment,"
                        "name varchar(255),"
                        "age int,"
                        "score int);");
             query.exec("insert into student(id ,name ,age ,score) values(20153237,'小崔',22,100);");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_btnList_clicked()
{
    QSqlQuery query;
    query.exec("select * from student");
       while(query.next())
        {
            QString  id= query.value(0).toString();
            QString  name= query.value(1).toString();
            QString  age= query.value(2).toString();
            QString  score= query.value(3).toString();
            qDebug()<<id<<name<<age<<score;
        }
}