环境:
win7 64VS 2013Qt 5.6.0(32 msvc)Qt add in 1.2.5Qt中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,按照以下几步来:
在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.dll和qsqlodbcd.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)了。