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的驱动的,所以,需要自己来装驱动。
- 因为需要自己编译Mysql的驱动,所以需要在官网下载源码版本的Qt,不影响原有Qt的使用,只是用源码来编译驱动。----- 也可以下载dmg的qt,安装的时候选择安装qt源码。
- 需要使用
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路径。
- 进入驱动源码的文件夹
cd Qt源码/qtbase/src/plugins/sqldrivers
- 开始编译
# step 1
qmake -- MYSQL_PREFIX=/usr/local/mysql
# step 2
make sub-mysql
# step 3
qmake
# step 4
make install
- 此时在Qt安装目录下就会生成驱动。
/Users/yu/Qt5.14.2/5.14.2/clang_64/plugins/sqldrivers
注意这个路径是安装包版本Qt的路径 - 查看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)
- 如果此时Qt还是无法链接数据库,是由于
@rpath/libmysqlclient.21.dylib
没有链接到本地的真实路径 - 使用命令添加
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
- 此时就可以使用数据库了
// 在.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();
}
网友评论