• QT学习笔记(16) QT5的数据库操作


    一、编译驱动

      参考博客:http://blog.csdn.net/xian0gang/article/details/49791351

      因为从QT5以来,它就自带数据库驱动了,所以我们不需要费事的编译也可以使用数据库。QT访问MySQL需要两个动态链接库文件,一个是QT自己的mysql驱动插件,另一个是MySQL提供的动态链接库,缺一不可。

      在程序里指定要访问的数据库是MySQL,QT会自动的加载MySQL驱动插件,其实实现依赖于MySQL的动态链接库访问MySQL。

    (1)访问MySQL提供的动态链接库

      在这就不提怎么安装MySQL 了,在目录 lib 里可以找到 MySQL 的动态链接库 libmysql.dll 和 libmysqld.lib

      

      找到这两个文件,然后把它们复制到我们QT安装的目录下,如下:

      

    (2)测试数据库连接

      在项目文件.pro中,加入sql模块,然后在用到所需的类是必须包含头文件。

      QT_HelloWorld18.pro

     1 #数据库操作,需要加载sql模块
     2 QT       += core gui sql
     3 
     4 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     5 
     6 TARGET = QT_HelloWorld18
     7 TEMPLATE = app
     8 
     9 
    10 SOURCES += main.cpp
    11         widget.cpp
    12 
    13 HEADERS  += widget.h
    14 
    15 FORMS    += widget.ui

      widget.cpp

     1 #include "widget.h"
     2 #include "ui_widget.h"
     3 #include <QDebug>
     4 #include <QtSql/QSqlDatabase>
     5 #include <QtSql/QSqlError>
     6 #include <QMessageBox>
     7 #include <QString>
     8 
     9 Widget::Widget(QWidget *parent) :
    10     QWidget(parent),
    11     ui(new Ui::Widget)
    12 {
    13     ui->setupUi(this);
    14 
    15     //打印QT支持的数据库驱动
    16     qDebug() << QSqlDatabase::drivers();
    17 
    18     //添加MySql数据库
    19     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    20     //连接数据库
    21     db.setHostName(QString::fromLocal8Bit("127.0.0.1"));//数据库服务器IP
    22     db.setUserName(QString::fromLocal8Bit("root"));//数据库用户名
    23     db.setPassword(QString::fromLocal8Bit("ccs"));//密码
    24     db.setDatabaseName(QString::fromLocal8Bit("db_qt_test"));//使用哪个数据库
    25 
    26     if(db.open() == true)
    27     {
    28         QMessageBox::information(this,QString::fromLocal8Bit("正确"),
    29                                  QString::fromLocal8Bit("连接数据库成功"));
    30         return ;
    31     }
    32     else
    33     {
    34         QMessageBox::warning(this,QString::fromLocal8Bit("错误"),
    35                              db.lastError().text());
    36         return ;
    37     }
    38 }
    39 
    40 Widget::~Widget()
    41 {
    42     delete ui;
    43 }

      

  • 相关阅读:
    可扩容分布式session方案
    Linux 极限压缩
    python调用jenkinsAPI
    Jenkins-slave分布式跨网络发布
    mysql查看指定数据库各表容量大小
    FastAPI--依赖注入之Depends(8)
    FastAPI--跨域处理(7)
    FastAPI--中间件(6)
    FastAPI--错误处理(5)
    FastAPI--响应报文(4)
  • 原文地址:https://www.cnblogs.com/blog-ccs/p/7472900.html
Copyright © 2020-2023  润新知