C++/Qt

MAC环境下Qt Mysql的配置

2020-05-19  本文已影响0人  哦呵呵y

Qt下载官网 http://download.qt.io/archive/qt/

在 Qt中使用数据库,需要配置数据库驱动。

#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
 
    qDebug()<<"Avaliable drivers;";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver,drivers)
        qDebug()<<driver;
 
 
    return a.exec();
}


Avaliable drivers;
"QSQLITE"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7"

刚安装完qt的时候是没有Mysql的驱动的,所以,需要自己来装驱动。

  1. 因为需要自己编译Mysql的驱动,所以需要在官网下载源码版本的Qt,不影响原有Qt的使用,只是用源码来编译驱动。----- 也可以下载dmg的qt,安装的时候选择安装qt源码。
  2. 需要使用 qmake 命令,所以在装完Qt之后先配置环境变量。
export QTDIR=/Users/yu/Qt5.14.2/5.14.2/clang_64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
export PATH=$PATH:$QTDIR/bin

路径要改成自己电脑的路径
这个路径是安装包版本的Qt路径。

  1. 进入驱动源码的文件夹 cd Qt源码/qtbase/src/plugins/sqldrivers
  2. 开始编译
# step 1
qmake -- MYSQL_PREFIX=/usr/local/mysql
# step 2
make sub-mysql
# step 3
qmake
# step 4
make install
  1. 此时在Qt安装目录下就会生成驱动。
    /Users/yu/Qt5.14.2/5.14.2/clang_64/plugins/sqldrivers
    注意这个路径是安装包版本Qt的路径
  2. 查看libqsqlmysql.dylib的链接信息 otool -L libqsqlmysql.dylib
libqsqlmysql.dylib:
    libqsqlmysql.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/QtSql.framework/Versions/5/QtSql (compatibility version 5.14.0, current version 5.14.2)
    @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.14.0, current version 5.14.2)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    @rpath/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 902.1.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
  1. 如果此时Qt还是无法链接数据库,是由于@rpath/libmysqlclient.21.dylib没有链接到本地的真实路径
  2. 使用命令添加rpath的查找路径 保证@rpath/libmysqlclient.21.dylib能找到本地的libmysqlclient.21.dylib
    install_name_tool -add_rpath /usr/local/mysql-8.0.20-macos10.15-x86_64/lib libqsqlmysql.dylib
  3. 此时就可以使用数据库了
// 在.pro文件中添加 
QT += sql

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
 
void mysql::connect_mysql()
{
    db = QSqlDatabase::addDatabase("QMYSQL");  //连接的MYSQL的数据库驱动
    db.setHostName("localhost");         //主机名
    db.setPort(3306);                    //端口
    db.setDatabaseName("YSTest");          //数据库名
    db.setUserName("root");              //用户名
    db.setPassword("12345678");            //密码
    db.open();
 
    //测试连接
 
    if(!db.open())
    {
        qDebug()<<"不能连接"<<"connect to mysql error"<<db.lastError().text();
        return ;
    }
    else
    {
         qDebug()<<"连接成功"<<"connect to mysql OK";
    }
 
    db.close();
}
上一篇 下一篇

猜你喜欢

热点阅读