• 6450阅读
  • 2回复

[提问]Qt MySQL驱动编译傻瓜式教程Qt SDK上已经成功运行,不过后面还有疑问?请大侠指导 [复制链接]

上一主题 下一主题
离线youny
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-04
网上有太多的方法,但是找了半天还是不行,但是配置好之后用QT Creator连接数据可以,用VS2008还是不行。
最后有人说直接运行也是OK的,参考:http://www.qtcn.org/bbs/read-htm-tid-51060-displayMode-1-page-1.html#140264。步骤如下:Qt SDK上已经成功运行。


1安装有QtCreator 或Qt SDK能直接运行.pro


2.文件夹下C:\Qt\4.7.3\src\plugins\sqldrivers\mysql的mysql.pro
增加两行代码:

INCLUDEPATH+=C:/MySQL/include
LIBS += -LC:/MySQL/lib/ -llibmysql


上面指示路径"C:/MySQL"是新建目录文件夹,里面东西从MySQL的安装路径考出
本例安装的是MySQL 5.5,安装路径为"C:\Program Files\MySQL\MySQL Server 5.5"考出“include和lib”放在新建目录文件夹“C:/MySQL”下。


3.之后直接运行mysql.pro,出现QtCreator界面,选择Qt版本,


此处选择了Qt 4.7.3,进行调试和发布个运行一次。
4.在C:\Qt\4.7.3\src\plugins\sqldrivers\mysql路径下,出现debug和release两个文件夹,把debug里面的qsqlmysqld4.lib和qsqlmysqld4.dll release文件夹下的qsqlmysql4.dll和qsqlmysql4.lib放到
C:\Qt\4.7.3\plugins\sqldrivers文件夹下。
5.将MySQL/ lib文件夹下的libmysql.dll考到要使用的Qt版本的bin处。




如果是Vs2008+Qt,那么上面选择Qt版本是vs2008的qt版本。其他步骤一样


工具选项,手动添加
项目构建设置再次设置。就可以了
注意:此处测试程序中,DatabaseName("test")已在MySQL数据库中建好。MySQL数据库UserName为root密码123456.
测试程序




  1. #include <QtGui/QApplication>
  2. #include "mainwindow.h"
  3. #include <QtSql>
  4. #include <QString>
  5. #include <QSqlRecord>
  6. #include <QDebug>
  7. void openDb()
  8. {
  9.     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  10.     db.setHostName("localhost");
  11.     db.setDatabaseName("test"); //test为Mysql中的schema名
  12.     db.setUserName("root");
  13.     db.setPassword("123456");
  14.     bool ret = db.open();
  15.     if (ret)
  16.     {
  17.         qDebug("open db ok");
  18.     }
  19.     else
  20.     {
  21.         qDebug("open db failed");
  22.         qDebug() << db.lastError().text();
  23.     }
  24.     qDebug()<<"Begin";
  25. //    QSqlQuery query;
  26. ////    query.exec(QObject::tr("create table student(sno varchar(10) not null primary key,sname varchar(20) not null,sclass varchar(10) not null)"));
  27. ////    query.exec(QObject::tr("insert into student(sno,sname,sclass) values('2009001','lilei','0901')"));
  28. ////    query.exec(QObject::tr("insert into student(sno,sname,sclass) values('2009002','lucy','0902')"));
  29. ////    query.exec(QObject::tr("insert into student(sno,sname,sclass) values('2009003','mike','0903')"));
  30. //    query.exec("select * from student");
  31. //    qDebug()<<"sno    sname   sclass";
  32. //    while(query.next())
  33. //    {
  34. //        qDebug()<<query.value(0).toString()<<"  "<<query.value(1).toString()<<" "<<query.value(2).toString();
  35. //    }
  36. //    qDebug()<<"End";
  37.     QSqlQuery query("select sname from student",db);
  38.     QSqlRecord rec=query.record();
  39.     while(query.next())
  40.     {
  41.         rec=query.record();
  42.         int snocol=rec.indexOf("sname");
  43.         QString value=query.value(snocol).toString();
  44.         qDebug()<<"sno :"<<value;
  45.     }
  46.     query.clear();
  47.     db.close();
  48.     qDebug()<<"End";
  49. }
  50. int main(int argc, char *argv[])
  51. {
  52.     QApplication a(argc, argv);
  53.     openDb();
  54. //    MainWindow w;
  55. //    w.show();
  56.     return a.exec();
  57. }



运行结果:

但是同样的程序在VS2008下就出错了,同样的都是使用vs2008下的qt4.7.3,其他程序是一样的,为什么呢?



离线youny
只看该作者 1楼 发表于: 2013-03-04
再次按Vs2008 MySQL搭建方法重新编译驱动,还是出现问题
参考http://blog.csdn.net/young0325/article/details/7171611我用再次重新编译驱动,但是结果还是出现那个问题?编译好的驱动,在QT SDK环境中MySQL还是能用的。难道写的程序哪边有问题,请指教?就好像在Qt Creator中要加QT += sql这一句差不多的,不知道Vs怎么出问题了
离线youny
只看该作者 2楼 发表于: 2013-03-06
没有include lib现已解决,谢谢
快速回复
限100 字节
 
上一个 下一个