Qt--MySql连接

Qt–MySql数据库连接

1、QSqlQuery类
提供了对象数据库的数据进行基本的增删查改的操作,主要针对sql语句的描述

2、QSqlTableModel类
建立在QSqlQuery类基础上,对QSqlQuery类重新封装,提供了一个单表操作的可编辑数据模型,不需要针对sql有太多关注,需要了解相关的函数,实现对数据的增删查改

不同数据库在操作时,针对数据库的驱动配置也是不同的

1)在.pro文件下
配置sql模块,让加载到工程中
QT += sql
代表载入了一个文件夹 QtSql

2)测试驱动配置,哪些驱动我们可以使用

QStringList drivers =  QSqlDatabase::drivers();
foreach(QString driver, drivers){
    qDebug() << driver;
}

ps:mysql驱动安装 将MySQL文件夹lib库文件夹下的
libmysql.dll放入Qt的库文件夹中

代码:
sql.pro

#-------------------------------------------------
#
# Project created by QtCreator 2021-04-19T12:58:38
#
#-------------------------------------------------

QT       += core gui
QT       += sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ssql
TEMPLATE = app


SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

FORMS    += widget.ui

wigest.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210420225819978.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxMjM4NA==,size_16,color_FFFFFF,t_70#pic_center)
    return a.exec();
}

wigest.cpp



#include "widget.h"
#include "ui_widget.h"
#include<QSqlQuery>
#include<QSqlDatabase>


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QStringList drivers = QSqlDatabase ::drivers();
    foreach(QString driver,drivers){
        qDebug() << driver;
    }


    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

     //2、设置数据连接名称
     //2.1 数据放在内存中 ":memory:"
     //2.2 数据放在数据库中 "数据库的名称" 如下所示
     db.setDatabaseName("wx");

     //3、如果连接真实数据库,数据真实存储在数据中
     //设置用户名、密码、端口
      db.setHostName("localhost");
      db.setUserName("root");//设置用户名
      db.setPassword("123456");//设置密码
      db.setPort(3306);//设置端口

     //4、打开数据库
     if(!db.open()){
         qDebug() << "open database error!";
     }

     //5、开始操作数据库的数据
     QSqlQuery query;//创建一个数据操作的对象
     //5.1 创建一张临时的表
     query.exec("create table student(id int primary key, name varchar(48))");

     //5.2 插入一张的临时数据
     query.exec("insert into student values(1,'zhangsan')");
     query.exec("insert into student values(2,'lisi')");
     query.exec("insert into student values(3,'wangwu')");

     //5.3 查询该临时表的基本数据
     //查询结果有可能是多条记录
     //数据依然存储在query对象中,该对象这时候可以认为他是一个结果的容器对象
     query.exec("select * from student");

     //5.4 针对query对象遍历,输出显示该对象中的基本数据
     //next指向查找到的第一条记录,然后判断是否存在数据,如果存在返回true,
     //同时会将指向位置自动移到下一条数据的位置
     while(query.next()){
         //将数据解析出来,显示
         //value(); 重载形式
         //value(QString labelname); 参数是真实列名  推荐
         //value(int index); 参数是具体的列它的索引位置 从0开始
         int id = query.value("id").toInt();
         QString name = query.value(1).toString();

         //输出显示
         qDebug() << id << "  " << name;
     }
}

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


运行截图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210420230701682.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxMjM4NA==,size_16,color_FFFFFF,t_70)

MySql数据库会自动建立student表格如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210420225952658.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDUxMjM4NA==,size_16,color_FFFFFF,t_70)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值