在ubuntu下使用Qt5.4连接mysql数据库出现错误
在ubuntu下使用Qt5.4连接mysql数据库出现错误,
void Widget::loadMySqlDriver() { QPluginLoader loader; // MySQL 驱动插件的路径 // loader.setFileName("/Users/Biao/Qt5.4.0/5.4/clang_64/plugins/sqldrivers/libqsqlmysql.dylib"); loader.setFileName("/home/caesar/Qt/5.4/gcc/plugins/sqldrivers/libqsqlmysql.so"); qDebug() << loader.load(); qDebug() << loader.errorString(); }
运行以上代码后出现提示,
但是查找ubuntu的文件并没有找到版本为16的库,
将libmysqlclient_r.so.18 拷贝一份并 重命名 我们需要的 libmysqlclient_r.so.16 , 放置在 /usr/lib/i386-linux-gnu/ 目录下 ;
再次运行程序,发现连接数据库成功.
如果不成功,将库所在目录添加到环境变量中。
全部代码如下
#include "widget.h" #include <QPluginLoader> #include <QDebug> #include <QSqlDatabase> #include <QMessageBox> #include <QSqlError> #include <QSqlQuery> Widget::Widget(QWidget *parent) : QWidget(parent) { this->loadMySqlDriver(); this->connect(); } Widget::~Widget() { } void Widget::loadMySqlDriver() { QPluginLoader loader; // MySQL 驱动插件的路径 // loader.setFileName("/Users/Biao/Qt5.4.0/5.4/clang_64/plugins/sqldrivers/libqsqlmysql.dylib"); loader.setFileName("/home/caesar/Qt/5.4/gcc/plugins/sqldrivers/libqsqlmysql.so"); qDebug() << loader.load(); qDebug() << loader.errorString(); } void Widget::connect() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "Connection_Name"); db.setDatabaseName("qt"); db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("root"); if (!db.open()) { qDebug() << "Connect to MySql error: " << db.lastError().text(); return; } QSqlQuery query(db); query.exec("SELECT * FROM user"); while (query.next()) { qDebug() << query.value("username").toString(); } }