Qt 连接并使用 SQL Sever数据库


记录详细的连接 SQL Sever数据库的使用全过程

环境

  • 系统: Windows 10 专业版
  • Qt版本: Qt 5.14.2 【编译套件 MinGW 32】
  • SQL Sever:SQL Sever 2019
  • 编程语言:C++

一、配置 ODBC数据源

一、在SQL Sever Manger中添加 新的用户

1. 打开如下自带的 MSS Management Studio

在这里插入图片描述

2、登录时选择 Windows 身份验证

在这里插入图片描述

3、去往 安全性-登录名 ,鼠标右键 新建登录名

在这里插入图片描述

4、在 常规 中,选择 SQL Sever 身份验证并输入 自定义的用户名和密码;

【可以选上 默认数据库是哪一个需要用的数据库】
在这里插入图片描述

5、在用户映射中 选择需要映射的数据库和用户名

【确保 db_owner 勾选,否则能连接数据库,但是不能数据库 增删改查 操作】
在这里插入图片描述

6、在状态中 将如下选项选择 授予 启用 状态

在这里插入图片描述

7、在 Navicat 中测试连接

在连接中如下输入【主机名】【初始化数据库可以忽略】
[不知道主机名的可以看第 8 条记录]
在这里插入图片描述
连接成功
在这里插入图片描述

  • 若出现连接失败【可以试一下 重置 czy 的密码(可为原密码)】在这里插入图片描述

8、主机名获取

在开始按钮中找到 如下软件
在这里插入图片描述
在如下可以看到服务器主机
在这里插入图片描述
若没有
可以参考 [第 9 条 ]如下配置

9、配置主机

一、在SQL Sever 网络配置中 确保 TCP/IP 已启用,里面参数默认即可
在这里插入图片描述
双击 TCP/IP 在IP地址栏中能查看服务器的IP地址 以及端口, 当然也可以配置端口,我选择默认
在这里插入图片描述
二、SQL Native Client 配置中 别名 新建别名,
在这里插入图片描述
我创建了一个 localhost 的别名
在这里插入图片描述
三、在Navicat 中测试连接
在这里插入图片描述

二、配置ODBC数据源

1、打开ODBC数据源

在这里插入图片描述

2、添加SQL Sever 数据源

如下图配置
在这里插入图片描述

3、配置数据源描述

选择我们刚刚创建的 localhost 服务器
在这里插入图片描述

4、选择用户名登录

使用刚刚创建的 czy 账户
在这里插入图片描述
后面没啥变化就直接下一步

5、测试数据源

在这里插入图片描述
数据源测试成功
在这里插入图片描述

6、浏览创建的数据源 【czyTest】

在这里插入图片描述

二、数据库连接连接

一、数据库 sql 代码【含创建表和插入数据】

【可能需要删除部分代码,请自行删减】

-- ----------------------------
-- Table structure for LoginHistory_TB
-- ----------------------------
CREATE TABLE [dbo].[LoginHistory_TB] (
  [ID] int  NULL,
  [LoginName] nvarchar(254) COLLATE Chinese_PRC_CI_AS  NULL,
  [LoginTime] nvarchar(254) COLLATE Chinese_PRC_CI_AS  NULL,
  [LogoutTime] nvarchar(254) COLLATE Chinese_PRC_CI_AS  NULL,
  [Operation] int  NULL
)
GO

ALTER TABLE [dbo].[LoginHistory_TB] SET (LOCK_ESCALATION = TABLE)
GO


-- ----------------------------
-- Records of LoginHistory_TB
-- ----------------------------
INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'1', N'卫雪', N'2021/1/8-08:32:49', N'2021/1/8-12:32:49', N'1111')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'2', N'夹谷利', N'2021/1/8-08:32:50', N'2021/1/8-12:32:50', N'11')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'3', N'牧彩', N'2021/1/8-08:32:61', N'2021/1/8-12:32:51', N'1')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'4', N'祖燕', N'2021/1/8-08:32:62', N'2021/1/8-12:32:52', N'111')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'5', N'傅智祥', N'2021/1/8-08:32:53', N'2021/1/8-12:32:53', N'111')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'6', N'金孝伯', N'2021/1/8-08:35:54', N'2021/1/8-12:32:54', N'1')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'7', N'谷宰玉媛', N'2021/1/8-08:35:55', N'2021/1/8-12:32:55', N'1111')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'8', N'冀韵', N'2021/1/8-08:32:56', N'2021/1/8-12:32:56', N'1')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'9', N'夹谷利', N'2021/1/8-08:32:57', N'2021/1/8-12:32:57', N'1')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'10', N'牧彩', N'2021/1/8-08:32:58', N'2021/1/8-12:32:58', N'1111')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'11', N'祖燕', N'2021/1/8-08:32:59', N'2021/1/8-12:32:59', N'11')
GO

INSERT INTO [dbo].[LoginHistory_TB] ([ID], [LoginName], [LoginTime], [LogoutTime], [Operation]) VALUES (N'12', N'祖燕', N'2021/1/8-08:33:00', N'2021/1/8-12:32:00', N'1111')
GO

二、Qt C++代码

1、工程目录

在这里插入图片描述

2、工程文件

QT -= gui
QT += sql core

CONFIG += c++11 console
CONFIG -= app_bundle

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

3、主函数文件

//main.cpp
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>

int main(int argc, char *argv[])
{
    //数据库配置
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("localhost");         // 服务器名称
    db.setDatabaseName("czyTest");       // 数据源名称
    db.setUserName("czy");               // 用户名
    db.setPassword("202128you");         // 密码

    //数据库连接
    bool ok = db.open();
    if(ok)
    {
        qDebug()<<"DataBase open sucess!";
    }
    else {
        qDebug()<<db.lastError();
    }

    //数据库查询
    QSqlQuery query("SELECT * FROM LoginHistory_TB;");
    qDebug()<<"ID     LoginName        LoginTime                LogoutTime        OPeration";
    while (query.next()) 
    {
        int ID = query.value(0).toInt();
        QString LoginName = query.value(1).toString();
        QString LoginTime = query.value(2).toString();
        QString LogoutTime = query.value(3).toString();
        int OPeration = query.value(4).toInt();

        qDebug()<<QString("%1       %2       %3         %4      %5")
                  .arg(ID).arg(LoginName).arg(LoginTime).arg(LogoutTime).arg(OPeration);
    }

    //数据库关闭
    db.close();
    return 0;
}

4、运行结果

DataBase open sucess!
ID     LoginName        LoginTime                LogoutTime        OPeration
"1       卫雪       2021/1/8-08:32:49         2021/1/8-12:32:49      1111"
"2       夹谷利       2021/1/8-08:32:50         2021/1/8-12:32:50      11"
"3       牧彩       2021/1/8-08:32:61         2021/1/8-12:32:51      1"
"4       祖燕       2021/1/8-08:32:62         2021/1/8-12:32:52      111"
"5       傅智祥       2021/1/8-08:32:53         2021/1/8-12:32:53      111"
"6       金孝伯       2021/1/8-08:35:54         2021/1/8-12:32:54      1"
"7       谷宰玉媛       2021/1/8-08:35:55         2021/1/8-12:32:55      1111"
"8       冀韵       2021/1/8-08:32:56         2021/1/8-12:32:56      1"
"9       夹谷利       2021/1/8-08:32:57         2021/1/8-12:32:57      1"
"10       牧彩       2021/1/8-08:32:58         2021/1/8-12:32:58      1111"
"11       祖燕       2021/1/8-08:32:59         2021/1/8-12:32:59      11"
"12       祖燕       2021/1/8-08:33:00         2021/1/8-12:32:00      1111"

  • 20
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
要在Unity中连接SQL Server数据库,你需要使用System.Data.SqlClient命名空间提供的一些类。以下是一些基本步骤: 1. 首先,你需要在Unity项目中添加对System.Data.dll程序集的引用。可以在Visual Studio中完成此操作,也可以使用Unity的“Assets”菜单中的“Import Package”选项。 2. 接下来,你需要编写C#代码来连接SQL Server数据库。以下是一个简单的示例: ``` using System.Data.SqlClient; string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"; SqlConnection connection = new SqlConnection(connectionString); connection.Open(); ``` 在这个示例中,你需要将“myServerAddress”替换为SQL Server的主机名或IP地址,“myDataBase”替换为要连接数据库名称,“myUsername”和“myPassword”替换为SQL Server登录凭据。 3. 一旦连接建立,你可以使用SqlCommand类来执行SQL查询。以下是一个示例: ``` string query = "SELECT * FROM myTable"; SqlCommand command = new SqlCommand(query, connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 处理查询结果 } ``` 在这个示例中,你需要将“myTable”替换为要查询的表的名称。使用SqlDataReader类可以逐行读取查询结果,并对每行进行处理。 这只是连接SQL Server数据库的基本步骤,你可能需要进行更多的配置和错误处理。但是这应该可以帮助你开始了解如何在Unity中连接SQL Server数据库
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳风暴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值