环境:
win7 32vs 2013qt 5.6.0(32 ms)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.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”冲突”。
以上过程除了vs2013本机命令提示的路径外,会用到三个qt下的路径,千万小心不要弄混,我用不同颜色的笔标出来了
重新运行前面提到的程序结果如下:
available drivers: "qsqlite" "qmysql" "qmysql3" "qodbc" "qodbc3" "qpsql" "qpsql7"
可见已经有sqlserver驱动(odbc)了。