1.ubuntu16.04下qt5连接MySQL数据库
在.pro文件中添加
QT += sql
在main.cpp中添加头文件
#include <QtSql>
#include <QMessageBox>
在main.cpp中添加连接数据库的代码
//连接数据库-------------------------------------------
QStringList list = QSqlDatabase::drivers();
qDebug() << list;
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
if(db.isValid())
{
QMessageBox::critical(NULL,"connect","OK");
}
else
{
QMessageBox::critical(NULL,"connect","ERROR");
}
db.setHostName("127.0.0.1");// 本地连接
db.setDatabaseName("vod");// 数据库名字
db.setUserName("root");// 数据库用户名
db.setPort(3306);// 如果使用的是默认端口可以不设置
db.setPassword("123456");// 数据库密码
if(db.open())
{
w.show();
}
else
{
QMessageBox::warning(NULL,"error","数据库连接失败");
return 0;
}
编译代码,此时如果出现如下问题:表示未加载
2.连接失败问题解决
分析问题:可能是qt与mysql的位数不相同或者缺少驱动依赖。
查看mysql的版本位数:mysql -V
mysql -V
MySQL显示是64位,然后Qt本身是64位,则排除位数不同,则是需要安装Qt的MySQL驱动的依赖。
解决问题:
首先查找libsqlmysql.so文件位置:
find / -name libqsqlmysql.so
进入qt的sqldrivers目录
cd /opt/Qt5.5.0/5.5/gcc_64/plugins/sqldrivers
通过ldd libqsqlmysql.so查看动态库连接情况,发现有三个库是not found
ldd libqsqlmysql.so
解决libssl.so.10 => not found和libcrypto.so.10 => not found的问题
# sudo apt-get install libssl1.0.0 libssl-dev
# cd /lib/x86_64-linux-gnu
# sudo ln -s libssl.so.1.0.0 libssl.so.10
# sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
再次通过ldd libqsqlmysql.so查看动态库链接情况,这时发现这两个链接都已经存在
解决问题:libmysqlclient_r.so.16 not found
下载相关的库文件并放到/usr/lib/x86_64-linux-gnu下面
cd /usr/lib/x86_64-linux-gnu
执行报错:查找原因发现libmysqlclient_r.so.16 这个文件需要手动创建
方法:删除该libmysqlclient_r.so.16重建连接
root@ubuntu:cd /usr/lib/x86_64-linux-gnu
# ln -s libmysqlclient_r.so.16.0.0 libmysqlclient_r.so.16
root@ubuntu:/usr/lib/x86_64-linux-gnu# ls//下面截图显示正常
再查看libmysqlclient_r.so.16可以显示有了,所有依赖库已经下载完成: