SQL Server【原创】Qt 使用ODBC driver 连接SQL Server

  最近于召开数据库的课程设计。第一独需要解决之问题是采取啊工具来兑现这系统。经过一番材料搜索,决定下SQL
Server Express
2012作为服务器,使用Qt作为编制客户端程序语言。问题是client如何连接SQL
Server? 下面是自之缓解办法。

  

  1.开启windows上的SQL Server
的ODBC驱动

    ODBC 是一个调用级接口,它使得应用程序得以访问任何拥有 ODBC
驱动程序的数据库中之多寡。使用 ODBC
可以创建有访问任何数据库(最终用户具有该数据库的 ODBC
驱动程序)的权限的数据库应用程序。ODBC
提供了一旦您的应用程序独立为来数据库管理系统 (DBMS) 的
API。一个应用程序访问DBMS中数据库的进程:应用程序使用ODBC API
向DBMS的ODBC Driver发起连接,应用程序的所有查询工作都拿透过ODBC
Driver来操作DBMS的数据库。因此只要操作DBMS必须优先启动ODBC
Diver。下面是开行过程。

    (1)控制面板->管理工具->数据源

      SQL Server 1

      SQL Server 2

    (2)用户DSN->选择“添加”,添加数据源(如齐图所示)。选择数据源驱动程序为SQL
Server(如下图所示).

      SQL Server 3

    (3)创建及SQL Server的数据源。这里注意选择好SQL
Server的实例作为服务器,例如我这边是DCKRSHW5HQU8SM1\SQLEXPRESS。

      SQL Server 4

    (4)选择登录验证方式。由于自身连连SQL Server的点子Windows
Authentication,因此挑选第一件。如果您的连方式是SQL Server
Authentication,请捎第二起并填写ID和password。

      SQL Server 5

    (5)更改默认数据库,下一致步,完成。

      SQL Server 6

    (6)测试数据源

      SQL Server 7SQL Server 8

  

  2. 编程连接SQL Server

    我用的Qt5.1.1(VS2012),在路线:Qt安装根目录/msvc2012/plugins/sqldrivers下可以找到支持ODBC的qsqlodbcd.dll。在路径:Qt安装根目录/msvc2012/include/QtSql下得搜索到对应头文件。

    关于ODBC API 的采取文档在途径:Qt安装根目录/msvc2012/doc/qtsql
下。打开index.html即可使。

    为了能够运用ODBC API 源程序需要丰富 头文件

        #include<QtSql/QtSql>

     在.pro文件中上加同推行来填补加sql动态库

        QT       +=sql

    如果您时之编译方式是Debug出现如下错误,将编译方式转呢Release即可编译。

    main.obj:-1: error: LNK2019:
unresolved external symbol “__declspec(dllimport) public: __thiscall
QSqlDatabase::~QSqlDatabase(void)” (__imp_??1QSqlDatabase@@QAE@XZ)
referenced in function _main

    debug报错而release不报错这个题材自己纠结了十分长远。其实原因是,当使用QT+=sql添加sql模块后,直接构建项目,项目的makefile.debug里面并无增长sql的debug库。当尽qmake后,sql模块的debug库会被补加到makefile.debug里面。如下面所示:

    LIBS          =
/LIBPATH:D:\ProgramFiles\Programing\Qt\Qt5.1.1\5.1.1\msvc2012\lib
D:\ProgramFiles\Programing\Qt\Qt5.1.1\5.1.1\msvc2012\lib\Qt5Sqld.lib
D:\ProgramFiles\Programing\Qt\Qt5.1.1\5.1.1\msvc2012\lib\Qt5Cored.lib 

 

 

    源程序:

 1 #include <QCoreApplication>
 2 //#include <QtSql/QSql>
 3 #include <QtSql/QtSql>
 4 #include<stdio.h>
 5 #include<stdlib.h>
 6 
 7 int main(int argc, char *argv[])
 8 {
 9     //QCoreApplication a(argc, argv);
10 
11     QString serverName = "DCKRSHW5HQU8SM1\\SQLEXPRESS";
12     QString dbName = "test";
13     QSqlDatabase myDB = QSqlDatabase::addDatabase("QODBC");//连接到ODBC驱动
14     QString dsn = QString("Driver={SQL Server};Server=%1;Database=%2;Trusted_Connection=yes").arg(serverName).arg(dbName);
15     myDB.setDatabaseName(dsn);
16     if(myDB.open())
17     {
18         printf("connect to server successfully\n");
19         myDB.close();
20     }
21     else
22     {
23         printf("connect to server failed\n");
24         printf("%s\n",myDB.lastError().text().toLatin1().data());
25     }
26 
27     return 0;
28 
29     //return a.exec();
30 }

 

  如何使用API进行连接要参见文档,我再此想要指出的凡什么勾勒”建立连接字符串”。上面代码中本身的ODBC连接字符串是

    ”Driver={SQLServer};Server=DCKRSHW5HQU8SM1\\SQLEXPRESS;Database=test;Trusted_Connection=yes”

  该连字符串之所以没Uid和Pwd字段是为自之SQL
Server的报到方式吗Windows Authentication。如果登录方式呢SQL Server
Authentication,请加加这点儿独字段。

  关于Connection
Strings,下面这网站有所有的Connection Strings收集。

    http://www.carlprothman.net/Default.aspx?tabid=81

  程序运行结果:

  SQL Server 9 

  

 

 

      

    

    

    

    

  

相关文章