【qt】windows下qt连接数据库

1.新建数据库

create database mydatabase;

在这里插入图片描述

2.新建表结构,并插入数据

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d80754b5eeb24f59a9ba57583093972c.png

3.qt下连接数据库

1.连接数据库,需要加sql
在这里插入图片描述

2.添加QsqlDatabase头文件,使用提示句柄,头文件QMessageBox

在这里插入图片描述

3.连接数据库

在这里插入图片描述

4.界面设计

在这里插入图片描述

5.插入实现
在这里插入图片描述

注意这里如果是插入失败的话,说明你的qt中没有mysql对应的驱动,需要自己下载
mysql驱动链接
注意对应你自己的qt版本
下载好将驱动放到
在这里插入图片描述
在这里插入图片描述
6.查询
在这里插入图片描述

4.演示

qt连接数据库

5.代码

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QSqlDatabase>
#include<QMessageBox>
#include<QSqlQuery>
#include<qDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_insertbutton_clicked();

    void on_findbutton_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//定义对象添加数据库

    db.setHostName("localhost");            //数据库所在的ip地址
    db.setDatabaseName("mydatabase");          //使用的数据库名称
    db.setUserName("root");                     //用户名
    db.setPassword("15529398397");             //用户密码
    db.setPort(3306);                          //数据库端口号

    if(db.open())                               //qt连接数据库成功
    {

       QMessageBox::information(this,"连接提示","连接成功");


    }
    else                                      //连接失败
     {

         QMessageBox::warning(this,"连接提示","连接失败");



    }

}

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


void Widget::on_insertbutton_clicked()
{

    QString id=ui->id->text();
    QString name=ui->name->text();
    QString birth=ui->birth->text();

    QString sql=QString("insert into student values (%1, '%2' ,'%3');").arg(id).arg(name).arg(birth);
    QSqlQuery query;
    if(query.exec(sql))
    {
      QMessageBox::information(this,"插入提示","插入成功");

    }
    else
       {

        QMessageBox::information(this,"插入提示","插入失败");

    }


}

void Widget::on_findbutton_clicked()
{

    QSqlQuery query;
    query.exec("select * from student");
    while(query.next())
    {
       qDebug()<<query.value(0);
       qDebug()<<query.value(1);
       qDebug()<<query.value(2);




    }






}

6.使用tableview控件显示查询

1.界面设计
在这里插入图片描述
2.代码实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.演示

8.代码

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QSqlDatabase>
#include<QMessageBox>
#include<QSqlTableModel>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_selectbutton_clicked();

private:
    Ui::Widget *ui;
    QSqlTableModel* m;

};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//定义对象添加数据库

    db.setHostName("localhost");            //数据库所在的ip地址
    db.setDatabaseName("mydatabase");          //使用的数据库名称
    db.setUserName("root");                     //用户名
    db.setPassword("15529398397");             //用户密码
    db.setPort(3306);                          //数据库端口号

    if(db.open())                               //qt连接数据库成功
    {

       QMessageBox::information(this,"连接提示","连接成功");
       m=new QSqlTableModel;
       m->setTable("student");
       ui->tableView->setModel(m);


    }
    else                                      //连接失败
     {

         QMessageBox::warning(this,"连接提示","连接失败");



    }
}

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


void Widget::on_selectbutton_clicked()
{
    m->select();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#小多子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值