Qt5.6.0(32位)编译SQLServer驱动(ODBC)(vs2013)

环境:

  • win7 64
  • VS 2013
  • Qt 5.6.0(32 msvc)
  • Qt add in 1.2.5

测试是否支持ODBC驱动:

Qt中SQL Server的驱动名是ODBC(Qt5.2连接SQLServer2008)。
可以到C:\Qt\Qt5.6.0\5.6\msvc2013\plugins\sqldrivers(改成自己的目录)查看是否有qsqlodbc.dll和qsqlodbcd.dll,或者用如下程序进检测:

qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
QSqlDatabase dbc = QSqlDatabase::addDatabase("QODBC");
qDebug() << "ODBC driver valid?" << dbc.isValid();

结果:

Available drivers:
         "QSQLITE"
         "QMYSQL"
         "QMYSQL3"
         "QPSQL"
         "QPSQL7"

列表中没有ODBC。

没有ODBC驱动怎么办?

不要怕,可以自己编译ODBC,按照以下几步来:

  • C:\Qt\Qt5.6.0\5.6\Src\qtbase\src\plugins\sqldrivers\odbc目录下,打开命令行(按shift+右键),执行qmake odbc.pro
  • C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts目录下打开VS2013 x86 本机工具命令提示,进入C:\Qt\Qt5.6.0\5.6\Src\qtbase\src\plugins\sqldrivers\odbc目录,执行nmake命令
  • C:\Qt\Qt5.6.0\5.6\Src\qtbase\plugins\sqldrivers目录下会生成qsqlodbc.dllqsqlodbcd.dll
  • 将生成的dll拷贝到C:\Qt\Qt5.6.0\5.6\msvc2013\plugins\sqldrivers
  • 完成

注意:

  • 没有Qt源码

    QT5.6 编译SQLServer驱动提示进入C:\Qt\Qt5.6.0\5.6\Src\qtbase\src\plugins\sqldrivers\odbc,但是我的C:\Qt\Qt5.6.0\5.6下面只有msvc2013文件夹,没有Src文件夹,该怎么办?

    解决方法:重新安装qt5.6,在选择组件的时候,把Source Coomponents勾选上。

  • vs2013的命令行要用正确

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts有很多的命令行快捷方式,不能乱用。这里编译的是32位的Qt的dll,如果用VS2013 开发人员命令提示进行nmake会提示如下错误:
    “模块计算机类型“x64”与目标计算机类型“X86”冲突”。

重新运行前面提到的程序结果如下:

Available drivers:
         "QSQLITE"
         "QMYSQL"
         "QMYSQL3"
         "QODBC"
         "QODBC3"
         "QPSQL"
         "QPSQL7"

可见已经有SQLServer驱动(ODBC)了。

posted @ 2017-03-09 12:19  ssh_alitheia  阅读(360)  评论(0编辑  收藏  举报