• 10578阅读
  • 5回复

如何解决Driver not loaded,连接MYSQL5 [复制链接]

上一主题 下一主题
离线light365
 

只看楼主 倒序阅读 楼主  发表于: 2006-08-19
如何解决Driver not loaded,连接MYSQL5
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
如何解决Driver not loaded,连接MYSQL5,
驱动已经编译生成,
%QTDIR%\plugins\sqldrivers目录下面已经有libqsqlmysql.a, qsqlmysql.dll这两个文件

程序如下:(网上搜的)
#include <QtGui>
#include <QtSql>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QTextEdit display;
    display.resize(400, 160);
    display.show();

    // 下面进行数据库的设置
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动
    db.setHostName("localhost");
    db.setDatabaseName("example"); // 我们之前建立的数据库
    db.setUserName("yunfan"); // 我们创建的 yunfan 用户名
    db.setPassword("password"); // yunfan 用户的密码
   
    bool ok = db.open(); // 尝试连接数据库
   
    if(ok){   // 这里用yunfan已经成功连上数据库
          QSqlQuery query; // 新建一个查询的实例

          if(query.exec("select * from employee")){ // 尝试列出 employee 表的所有记录
                // 本次查询成功
                int numRows = 0;

                // 询问数据库驱动,是否驱动含有某种特性
                if(db.driver()->hasFeature(QSqlDriver::QuerySize)){
                    numRows = query.size(); // 如果支持结果影响的行数,那么直接记录下来
                } else{
                    query.last(); //否则定位到结果最后,qt 文档说,这个方法非常慢
                    numRows = query.at() + 1;
                }

                QString id, lname, fname, phone;
                QDateTime dob;
                display.append("===========================================");
                display.append(QString::fromLocal8Bit(" id   | 姓名   | 生日   |   电话"));
                display.append("--------------------------------------");
                while(query.next()){ // 定位结果到下一条记录
                    id = query.value(0).toString();
                    lname = QString::fromLocal8Bit(query.value(1).toByteArray());
                    fname = QString::fromLocal8Bit(query.value(2).toByteArray());
                    dob = query.value(3).toDateTime();
                    phone = QString::fromLocal8Bit(query.value(4).toByteArray());
                    QString result = id + "   " + fname + lname + " " + (dob.toString()) + " "+phone;
                    display.append(result);
                }
                display.append("============================================");
                display.append(QString("totally %1 rows").arg( numRows) );
          } else {
                // 如果查询失败,用下面的方法得到具体数据库返回的原因
                QSqlError error = query.lastError();
                display.append("From mysql database: " + error.databaseText());
          }
    } else {
          // 打开数据库失败,显示数据库返回的失败描述
          display.append("cannot open database.");
          display.append("Reason: " + db.lastError().databaseText());
    }
    QApplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit()));
    return app.exec();
}


运行CMD到程序所在目录:
qmake -project -o client.pro
--client.pro文件中加入  QT += sql
并运行如下命令:
qmake
make
生成EXE文件,
运行出现:
cannot open database.
Reason: Driver not loaded
[ 此贴被XChinux在2006-08-19 19:39重新编辑 ]
在线XChinux

只看该作者 1楼 发表于: 2006-08-19
是不是你环境变量不完全?重新检查一下环境变量看看。
楼主可到下面这个帖子里把我打包的mysql qt4的驱动文件拷贝到相应位置(plugins/sqldrivers),试验看看。
http://www.qtcn.org/bbs/read.php?tid=5255
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线encyc_k
只看该作者 2楼 发表于: 2009-03-12
我也刚接触Qt不久,遇到的问题和LZ一样,mysql driver已经编出来了,但是还是提示driver not loaded。 我把可用的drviers都打印出来,发现就是plugins\sqldrivers下三个其他Qt的driver,我试着删去其中的两个,再打印就只剩下原来自带的一个了,这应该说明环境变量没有问题吧!请问LS的高手该怎么解决啊?

我下了你的驱动也不行
离线sherry_yang
只看该作者 3楼 发表于: 2009-03-12
驱动程序不对吧,qt4的驱动应该是libqsqlmysql4.a, qsqlmysqld4.dll
离线pbcnet
只看该作者 4楼 发表于: 2009-08-07
我也碰上这个问题了,跟楼主的情况完全一样,郁闷了一下午到现在也没弄好,请高手作答!!!
离线pbcnet
只看该作者 5楼 发表于: 2009-08-07
我的问题解决了,发了一个总结帖子http://www.qtcn.org/bbs/read.php?tid=20892
快速回复
限100 字节
 
上一个 下一个