前言
前面铺垫了很久,今天终于要利用Qt库连接SQL Server 2008 了。但是发现Qt5.6.0不具有QODBC驱动,因此使用此驱动需要根据自己的编译器版本自行编译,博客中详细介绍了如何利用VS2013编译64位的Qt5.6的QODBC驱动,其它版本过程类似。
QtSql模块介绍
QtSql模块提供了与平台以及数据库无关的访问SQL数据库的接口。要想连接数据,还需要SQL数据库驱动,Qt的SQL驱动独立于数据库。Qt中包含的数据库驱动有:QDB2(IBM),QIBASE (Borland InterBase),QMYSQL(MySQL),QODBC(微软)等等,但并不是所有的驱动都提供给了Qt的开源版本。要想知道当前的Qt版本是否支持自己用的DBMS,可以用下面的代码查看当前Qt版本所具有的数据库驱动。
查看现有驱动
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << driver;
return a.exec();
}
运行结果:
发现并没有我们所需要的QODBC驱动,C:\Qt\Qt5.6.0\5.6\msvc2013_64\plugins\sqldrivers中同样没有,也就是说明要自己编译QODBC驱动了。
如果没有QODBC驱动,在Qt程序中添加如下代码进行测试,提示如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
qDebug() << "ODBC driver?" << db.isValid();
编译QODBC驱动
(1)在Qt官网下载源码文件:qt-everywhere-opensource-src-5.6.0.zip并解压。odbc目录内容如下:
(2)打开VS,命令提示,把编译环境更改位64位
在窗口中输入cd /d C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64
输入:vcvars64.bat
输入:qmake odbc.pro
输入:nmake
(3)编译结果
编译出的驱动文件,将qsqlodbcd.dll,qsqlodbcd.pdb和qsqlodbc.dll拷至C:\Qt\Qt5.6.0\5.6\msvc2013_64\plugins\sqldrivers。
测试
结语
至此,QODBC驱动编译结束,整个编译过程大概2分钟。下一步将连接数据库并操作。