QT += sql //在.pro文件里加入这一句
//包含头文件
#include <QDebug>
#include <QSqlQuery>
#include <QSqlDatabase>
//连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("mydb");
db.setUserName("root");
db.setPassword("123456");
bool ok = db.open();
if(!ok)
{
qDebug()<<"open db fail";
return;
}
//将数据表中的内容全部列出
QSqlQuery query;
query.exec("SELECT * FROM tb_A2");
while(query.next())
{
qDebug()<<query.value(0).toString()<<query.value(1).toString();
}
如上,我编写了一个简单的测试数据库连接的程序,运行时出现了下面的错误提示:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
在Qt5.2.1中明明已经有mysql的驱动QMYSQL,为什么还是无法加载呢?
去google了一把,网上大多数是windows下和Qt4.x版本的,还好最终还是解决了,现在稍微记录解决过程下。
//Qt的安装路径
#cd /opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers/
#ls
libqsqlite.so libqsqlmysql.so libqsqlpsql.so
#ldd libqsqlmysql.so
这里就会发现:
libmysqlclient_r.so.16 =>not found
怎么解决呢?
//mysql 安装库路径
#cd /usr/lib/mysql/
#ls
INFO_BIN libmysqlclient.so.18 mysqlbug
INFO_SRC libmysqlclient.so.18.0.0 mysql_config
libmysqlclient.so.18.0.0.bak plugin
#cplibmysqlclient.so.18.0.0 libmysqlclient_r.so.16
#mvlibmysqlclient_r.so.16 /lib/
#cd /opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers/
#ldd libqsqlmysql.so
看看libmysqlclient_r.so.16是否还是not found
如果出现
libmysqlclient_r.so.16 => /lib/libmysqlclient_r.so.16
则说明已经成功了。如果还不行,再试着创建一软连接看看,
# pwd
/opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers
#ln -s /lib/libmysqlclient_r.so.16 ./libmysqlclient_r.so.16
Good luck !