环境:
- 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.dll
和qsqlodbcd.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)了。