Qt 连接并使用 SQL Sever数据库

Qt 连接 SQL Sever数据库

  • 环境
  • 一、配置 ODBC数据源
    • 一、在SQL Sever Manger中添加 新的用户
      • 1. 打开如下自带的 MSS Management Studio
      • 2、登录时选择 Windows 身份验证
      • 3、去往 安全性-登录名 ,鼠标右键 新建登录名
      • 4、在 常规 中,选择 SQL Sever 身份验证并输入 自定义的用户名和密码;
      • 5、在用户映射中 选择需要映射的数据库和用户名
      • 6、在状态中 将如下选项选择 授予 启用 状态
      • 7、在 Navicat 中测试连接
      • 8、主机名获取
      • 9、配置主机
    • 二、配置ODBC数据源
      • 1、打开ODBC数据源
      • 2、添加SQL Sever 数据源
      • 3、配置数据源描述
      • 4、选择用户名登录
      • 5、测试数据源
      • 6、浏览创建的数据源 【czyTest】
  • 二、数据库连接连接
    • 一、数据库 sql 代码【含创建表和插入数据】
    • 二、Qt C++代码
      • 1、工程目录
      • 2、工程文件
      • 3、主函数文件
      • 4、运行结果

记录详细的连接 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

Qt 连接并使用 SQL Sever数据库_第1张图片

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

Qt 连接并使用 SQL Sever数据库_第2张图片

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

Qt 连接并使用 SQL Sever数据库_第3张图片

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

【可以选上 默认数据库是哪一个需要用的数据库】
Qt 连接并使用 SQL Sever数据库_第4张图片

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

【确保 db_owner 勾选,否则能连接数据库,但是不能数据库 增删改查 操作】
Qt 连接并使用 SQL Sever数据库_第5张图片

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

Qt 连接并使用 SQL Sever数据库_第6张图片

7、在 Navicat 中测试连接

在连接中如下输入【主机名】【初始化数据库可以忽略】
[不知道主机名的可以看第 8 条记录]
Qt 连接并使用 SQL Sever数据库_第7张图片
连接成功
Qt 连接并使用 SQL Sever数据库_第8张图片

  • 若出现连接失败【可以试一下 重置 czy 的密码(可为原密码)】Qt 连接并使用 SQL Sever数据库_第9张图片

8、主机名获取

在开始按钮中找到 如下软件
Qt 连接并使用 SQL Sever数据库_第10张图片
在如下可以看到服务器主机
Qt 连接并使用 SQL Sever数据库_第11张图片
若没有
可以参考 [第 9 条 ]如下配置

9、配置主机

一、在SQL Sever 网络配置中 确保 TCP/IP 已启用,里面参数默认即可
Qt 连接并使用 SQL Sever数据库_第12张图片
双击 TCP/IP 在IP地址栏中能查看服务器的IP地址 以及端口, 当然也可以配置端口,我选择默认
Qt 连接并使用 SQL Sever数据库_第13张图片
二、SQL Native Client 配置中 别名 新建别名,
Qt 连接并使用 SQL Sever数据库_第14张图片
我创建了一个 localhost 的别名
Qt 连接并使用 SQL Sever数据库_第15张图片
三、在Navicat 中测试连接
Qt 连接并使用 SQL Sever数据库_第16张图片

二、配置ODBC数据源

1、打开ODBC数据源

Qt 连接并使用 SQL Sever数据库_第17张图片

2、添加SQL Sever 数据源

如下图配置
Qt 连接并使用 SQL Sever数据库_第18张图片

3、配置数据源描述

选择我们刚刚创建的 localhost 服务器
Qt 连接并使用 SQL Sever数据库_第19张图片

4、选择用户名登录

使用刚刚创建的 czy 账户
Qt 连接并使用 SQL Sever数据库_第20张图片
后面没啥变化就直接下一步

5、测试数据源

Qt 连接并使用 SQL Sever数据库_第21张图片
数据源测试成功
Qt 连接并使用 SQL Sever数据库_第22张图片

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

Qt 连接并使用 SQL Sever数据库_第23张图片

二、数据库连接连接

一、数据库 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、工程目录

Qt 连接并使用 SQL Sever数据库_第24张图片

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 
#include 
#include 
#include 
#include 

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()<

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"

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

你可能感兴趣的:(面试,学习路线,阿里巴巴,android,前端,后端)