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:QtQt5.6.05.6msvc2013pluginssqldrivers(改成自己的目录)查看是否有qsqlodbc.dll和qsqlodbcd.dll,或者用如下程序进检测:

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

结果:

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

列表中没有ODBC。

没有ODBC驱动怎么办?

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

  • C:QtQt5.6.05.6Srcqtbasesrcpluginssqldriversodbc目录下,打开命令行(按shift+右键),执行qmake odbc.pro
  • C:Program Files (x86)Microsoft Visual Studio 12.0Common7ToolsShortcuts目录下打开VS2013 x86 本机工具命令提示,进入C:QtQt5.6.05.6Srcqtbasesrcpluginssqldriversodbc目录,执行nmake命令
  • C:QtQt5.6.05.6Srcqtbasepluginssqldrivers目录下会生成qsqlodbc.dllqsqlodbcd.dll
  • 将生成的dll拷贝到C:QtQt5.6.05.6msvc2013pluginssqldrivers
  • 完成

注意:

  • 没有Qt源码

    QT5.6 编译SQLServer驱动提示进入C:QtQt5.6.05.6Srcqtbasesrcpluginssqldriversodbc,但是我的C:QtQt5.6.05.6下面只有msvc2013文件夹,没有Src文件夹,该怎么办?

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

  • vs2013的命令行要用正确

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

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

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

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

原文地址:https://www.cnblogs.com/shanchuan/p/8150292.html