0%

Qt连接SQL Server数据库

创建SQL Server身份验证的登录用户

  1. 用Windows身份登录,点击安全性中的登录名,新建登录名。

  2. 输入登录名后选择SQL Server身份验证设置密码(注意:取消强制实施密码策略)。
    创建登录名

  3. 然后点击左边的用户映射选择你要连接的数据库,然后选择下面的成员身份db_datareader、db_datawriter、db_ddladmin和db_owner,点击确定。
    选择数据库

  4. 设置服务器属性的安全性,服务器身份验证为SQL Server和Windows身份验证模式。
    设置验证模式

  5. 重新启动数据库。

  • 数据库方面已经设置好了,接下来设置ODBC。

配置ODBC

  1. 打开ODBC,在用户DSN中点击添加数据源,选择SQL Server,点击完成
    添加数据源
  2. 填写数据源的名称、描述和服务器,服务器就是你登录SQL Server的服务器名称,点击下一步
    填写数据源信息
  3. 选择SQL Server验证,输入数据库用户名和密码,点击下一步
    填写数据源信息
  4. 选择连接的数据库,点下一步测试数据源,测试成功后完成ODBC的配置
    填写数据源信息

Qt部分

  1. 创建一个项目,选择widget application即可,类选择QWidget

  2. 项目创建成功后,先在.Pro文件中加入sql模块
    填写数据源信息

    在qt中提供了多种数据驱动,可以使用qDebug() << QSqlDatabase::drivers()来打印qt支持的数据驱动,然后在类的.cpp文件中加入下列代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include "widget.h"
    #include "ui_widget.h"
    #include <QSqlDatabase>
    #include <QDebug>
    #include <QMessageBox>
    #include <QSqlError>
    #include <QSqlQuery>

    Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
    {
    ui->setupUi(this);

    //打印支持的数据驱动
    qDebug() << QSqlDatabase::drivers();
    //创建数据库对象,参数为数据驱动,在这里我们是ODBC
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    //获取dsn名称
    QString dsn = QString::fromLocal8Bit("Sqlodbc2");
    //设置主机名,即电脑名
    db.setHostName("DESKTOP-J7VJSE6");
    //设置数据库名,在这里我们用odbc间接连接数据库,所以用dsn
    db.setDatabaseName(dsn);
    //设置数据库用户名
    db.setUserName("user_c");
    //设置用户密码
    db.setPassword("532133921");
    //打开数据库
    if(!db.open())
    {
    QMessageBox::warning(this, "错误", db.lastError().text());
    }
    else
    {
    qDebug()<<"database open success!";
    //query可以实现对数据库的操作
    QSqlQuery query(db); //查询Card表并输出,测试能否正常操作数据库
    //exec执行制定的sql语句
    query.exec("select * from J");
    while(query.next())//query.next()获取某表中下一行的内容
    {
    //取出当前行的内容,value(n)n表示第n个属性,也可以用属性名进行指定
    qDebug() << query.value(0).toString()
    << query.value(1).toString()
    << query.value(2).toString();
    }
    }
    }
  3. 点击运行,就可以看到输出框输出了数据库ShiYan的内容

运行


参考资料:CSDN

-------------本文结束感谢您的阅读-------------