Qt连接SQL Server 2014数据库

1. 建立目标数据库

连接数据库之前,需先在SQL Server中建立一个目标数据库,建立数据库和添加表的步骤这里不详述。

如建立一个名为DataBase的数据库,其中有heart1表、heart2表和heartHD三个表。这里使用的是数据库版本为 SQL Server 2014 R2。

 

2. 配置数据库数据源

在配置数据源之前,要确保数据库1433号端口已打开,1433端口是SQL Server的默认端口,SQL Server服务使用两个端口:TCP-1433、UDP-1434。其中1433用于供SQL Server对外提供服务,1434用于向请求者返回SQL Server使用了哪个TCP/IP端口。

设置SQL Server 网络配置中的TCP/IP协议为已启用状态,并且检查其默认端口是否为1433端口。具体设置步骤如下图:

sql server 2014 导入2016 sql2014怎么导入数据库_SQL Server 2014

sql server 2014 导入2016 sql2014怎么导入数据库_Server_02

sql server 2014 导入2016 sql2014怎么导入数据库_Qt_03

服务和端口设置好后,接下来配置ODBC数据源。开放数据库连接(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。

Qt数据库驱动并不能直接连接到SQL Server中的数据库,而是要通过配置ODBC数据源来进行连接。具体设置步骤如下图:

点击dBASE Files,选择添加:

sql server 2014 导入2016 sql2014怎么导入数据库_SQL_04

选择SQL Server:

sql server 2014 导入2016 sql2014怎么导入数据库_Server_05

命名数据源名称并选择服务器,这里的服务器名即SQL Server 登录框中的服务器名,把它复制过来:

sql server 2014 导入2016 sql2014怎么导入数据库_SQL_06

选择登录方式为SQL Sever验证方式,并设置登录名和密码,这里选择sa(超级用户):

注意:登录名必须是数据库中已存在的登录用户。

sql server 2014 导入2016 sql2014怎么导入数据库_Server_07

选择需要连接的数据库作为默认数据库:

sql server 2014 导入2016 sql2014怎么导入数据库_Qt_08

sql server 2014 导入2016 sql2014怎么导入数据库_SQL_09

选择下一步,选择“测试数据源”,成功后单击确定。

sql server 2014 导入2016 sql2014怎么导入数据库_SQL_10

sql server 2014 导入2016 sql2014怎么导入数据库_Qt_11

 

3. Qt连接数据源

新建一个Qt GUI工程,在其pro文件中加入QT += sql,并设计界面。

下面是Qt帮助文档提供的连接代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
      db.setHostName("acidalia");
      db.setDatabaseName("customdb");
      db.setUserName("mojito");
      db.setPassword("J0a1m8");
      bool ok = db.open();

 

建立连接的代码:

#include <QApplication>
#include <QDialog>
#include"mainwindow.h"
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include<QSqlError>
 
bool OpenDatabase()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");   //数据库驱动类型为SQL Server
    qDebug()<<"ODBC driver?"<<db.isValid();
    QString dsn = QString::fromLocal8Bit("DataBase");     //数据源名称
    db.setHostName("localhost");                        //选择本地主机,127.0.1.1
    db.setDatabaseName(dsn);                         //设置数据源名称
    db.setUserName("sa");                             //登录用户
    db.setPassword("1234");                           //密码
    if(!db.open())                                     //打开数据库
    {
        qDebug()<<db.lastError().text();
        QMessageBox::critical(0, QObject::tr("Database error"), db.lastError().text());
        return false;                                   //打开失败
    }
    else
        qDebug()<<"database open success!";
    return true;
}
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    if(!OpenDatabase())
        return 1;
 
    w.show();
    return a.exec();
}

到此,Qt就连接上数据库了,其他数据库连接过程类似。

  1. 在连接过程中需注意的几个问题:
  2. 确保1433号端口已经打开;
  3. 确认SQL Server 网络配置的TCP/IP协议已启用;
  4. 正确配置ODBC数据源;
  5. 正确建立连接,登录名和登录密码为数据库中已存在的登录用户。