Qt 连接并使用 SQL Sever数据库

QT 连Sqlserver(以SQL Server Native Client方式) /连接 SQL Server 可以使用 Microsoft 提供的 SQL Server Native Client 驱动程序。//其中,"server_name" 是 SQL Server 的主机名或 IP 地址,"db_name" 是要连接的数据库名称,//在连接成功后,可以使用 "QSqlQuery" 对象执行 SQL 查询语句并处理查询结果。//"user_name" 和 "password" 是连接数据库的用户名和密码。//3. 连接 SQL Server 数据库。 阅读详情

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"

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

QT之连接SQLIte数据库详细使用说明 之前的代码放在文件中运行之后,就会在项目文件中生成一个MyDataBase.db文件,这个是在mainwindow.cpp中就写好了的。这里主要是.h去声明了函数,.cpp去实现了函数,现在main.cpp就需要去按照操作顺序调用就好了。首先在网上下载Navicat for SQLite的破解版,下载完之后按照流程安装就ok,很快。在弹出框中,输入文件名(可以写和文件一样,也可以不一样),以及文件存放的位置。这里是,如果没有这个数据库就创建,有连接就用连接的。点击“连接测试”,如果连接成功,就可以运行。 阅读详情

相关推荐

QT学习笔记-QtSQL

目录前言一、QtSQL简介二、SQLite简介三、QtSQL使用3.1建立数据库连接3.2执行SQL语句3.1.1遍历结果集3.1.2增加、更新和删除记录1.insert2.update3.delete3.1.3事务操作3.3SQL 模型类QSqlQueryModelQSqlTableModelQSqlRelationalTableModel3.4通过视图展示数据创建数据感知表单 前言 因工作需要,要实现一个小型的数据管理系统。本着想捡起来QT技能的想法,学习下QT开发界面管理数据库的操作。 一、QtS

kouqi627的博客 5821

Qt数据库高级编程、SQLServer、MySQL、SQLite

Qt框架是由Qt Company开发的全球主流跨平台C++界面应用程序开发框架、是跨平台项目的主流解决方案,  Qt 5 框架是高效的跨平台C++框架,易扩展,组件丰富、允许真正地组件编程,既可以开发桌面应用程序,也可用于控制台工具、上位机软件、和高性能服务器的开发,目前国内Qt高级开发工程师的待遇也一直居高不下!本课程为黄强老师《Qt 5一站式编程》系列课程中的核心课、主要帮助学员熟练    数据库驱动ODBC介绍    QSqlDatabase核心类讲解    Qt使用ODBC对SQL Server数据库的增删改查    Qt使用ODBC对MySQL数据库的增删改查    Qt使用ODBC对Access数据库的增删改查    Qt数据库模块架构源码剖析    Qt使用MSVC、MinGW编译MySQL数据库驱动    Qt使用QMYSQL对MySQL数据库的增删改查    Qt使用QSQLITE对SQLite 数据库的增删改查

在QT中实现账号密码登录界面及SQL Sever连接验证

设计界面 在UI中设计登录界面,效果如下: 关于LineEdit的文字提示实现: 可以选中LineEdit然后在属性中找到placeholderText然后更改右侧值即可实现 可在代码中实现,具体代码为: ui->usrLineEdit->setPlaceholderText(QString::fromUtf8("请输入用户名")); 关于密码框的实现: 可以选中Li...

liuguuangsheng的博客 7836

QT连接SQLserver详细教程

【可以选上 默认数据库是哪一个需要用的数据库】​。

qq_46712603的博客 5145

关于Qt5.6连接SQL sever的一些问题

这个问题简直困扰了我两三天啊。不知道为什么,最新版本的QT Creator的驱动力没有ODBC的驱动。于是就是连接不上数据库。 到网上查了好多资料,但是都没有什么具体的,大家都是简单地一说,新人表示真心不懂啊。 于是辗转付费的Qt交流群和贴吧,终于,好心人还是多啊,于是就接到了下面这么一个连接,里面写的还是很详细的,终于我调出来了,感动得快哭了!!感谢博主!!!真心好人!! http://b

LR'Blog 1560

利用QT  5.9 + SQL Server 2012搭建的简易的铁路信息管理系统

系统下载链接:https://download.youkuaiyun.com/download/qq_38941457/11267887 压缩包内包含源代码和系统运行说明。 本系统采用QT 5.9 +SQL Server 2012开发。 作为铁路信息管理系统,系统实现了用户与数据库的交互,界面简洁友好,操作方便。系统有三种客户类型,分别是顾客、工作人员和管理员。用户(顾客)只需对售票流程和业务调查了...

qq_38941457的博客 790

QT连接Sql Sever数据库

QT与Sql sever 2012的连接  源码链接:http://download.youkuaiyun.com/detail/zkpingguo/8740147 1.需要先想pro文件中添加如下行,表示加载模块: QT       +=coreguisql     2.包含头文件 #include #include #include #include   3.数据库的连接(这里先不

zkpingguo的博客 1139

STM32F407步进电机控制及DM542驱动器使用

基于DM542驱动器的步进电机简单控制

qq_43868701的博客 1万+

QT 连接SQL SEVER出现连接数据库成功,但是查询数据没有信息。

(2条消息) Qt 连接并使用 SQL Sever数据库_qt连接sql_太阳风暴的博客-优快云博客。改成 student,因为我的LoginHistory_TB表,在student数据库内。解决办法:到sql sever里面,将用户的默认数据库改成,上述表所在的数据库。最后,就成功查询并打印出来了。

m0_54487641的博客 1554

保姆级教程:在寒武纪MLU370上从零部署YOLOv5(附安全帽数据集)

本文提供在寒武纪MLU370上从零部署YOLOv5的保姆级教程,涵盖环境配置、模型迁移、安全帽数据集处理、训练优化及推理部署全流程。通过实战案例展示MLU370在目标检测任务中的高效性能,适合开发者快速掌握国产AI加速卡的应用技巧。

weixin_27419879的博客 190

【实战】ComfyUI-Impact-Subpack插件安装与UltralyticsDetectorProvider节点修复全流程

本文详细解析了ComfyUI中UltralyticsDetectorProvider节点缺失的原因,并提供了完整的ComfyUI-Impact-Subpack插件安装与修复全流程。核心在于Impact Pack插件架构调整导致节点被拆分至子插件包。指南涵盖手动安装、依赖安全配置、模型文件管理及深度排错步骤,帮助用户彻底解决节点缺失问题,恢复工作流正常运行。

weixin_29290947的博客 438

qt 连接sql sever 数据库课程设计

我的软件版本 Microsoft SQL Server 2005  (SQL Server Management Studio Express)   QT 5.3.1 代码如下 void creatconnection(){ //打开数据库 QSqlDatabase db=QSqlDatabase::addDatabase("QODBC"); db.setD

ddqqfree123的专栏 1942

SCRFD算法解读及环境安装实践

SCRFD检测算法及环境安装

lishanlu136的博客 1009

QtSQL SERVER连接数据库

void QInstallWidget::openDatabase() {     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");  //连接SQL SERVER     db.setDatabaseName(QString("DRIVER={SQL SERVER};"                               

q5512049的博客 577

【RT-DETR涨点改进】独家Conv改进篇 | 来自TIP 2024顶刊| 引入 DEConv细节增强卷积模块, 能够恢复更多细节信息,提升小目标检测精度、含多种不同模型改进点

本文提出了一种细节增强卷积(DEConv)模块,通过融合多种差异卷积(CDC、ADC、HDC、VDC)来增强图像特征表示能力,特别在边缘和纹理细节提取方面表现突出。该模块采用重参数化技术,在不增加计算成本的情况下,将先验信息融入常规卷积层,显著提升了RT-DETR模型在模糊或遮挡场景下的目标检测精度。实验验证了DEConv在多种骨干网络(ResNet18/50、HGNet等)中的有效性,为实时目标检测系统提供了轻量高效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 452

18006.STM32通过SPI读取LAN9253数据

【代码】18006.STM32通过SPI读取LAN9253数据。

写给自己的笔记 556

qt连接sql sever服务器 增删改

连接服务器 这个很简单 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName(QString("DRIVER={SQL SERVER};" "SERVER=%1;" "DATABASE=%2;"

yemu666的博客 535

CGAL 网格等高线计算

CGAL 网格等高线计算

dayuhaitang1的博客 452

QT 连接SQL SEVER 之后无法读取浮点和整型

1、ODBC Driver 的版本要对应上。

u013083044的博客 485

RT-DETR 模型剪枝优化:结构化剪枝对 R18/R50 性能的影响

本文提出分层结构化剪枝策略R18:参数量减少 42%(28M→16.2M),推理速度提升 35%(15→20.3 FPS@Jetson Nano),mAP@0.5 仅降 1.2%;R50:参数量减少 55%(170M→76.5M),推理速度提升 48%(42→62.2 FPS@T4),mAP@0.5 仅降 2.1%。核心价值:为 RT-DETR 提供“精度-效率-部署”平衡的轻量化方案,推动其在边缘设备、工业质检等场景的大规模落地。部署建议。

走向CTO的路上... 464

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

qt调用sql sever案例及错误解析

调用示例 采用的环境是Navicat premium可视化数据库,其中正常建立数据库即可。 步骤 结果为 其中数据库等信息如下: 代码为 QSqlDatabase DB = QSqlDatabase::addDatabase(“QODBC”); QString strDriver = QString(“DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2”).arg...

qq_42900310的博客 330

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vs2017 MFC C++ ado接口连接sql sever报错汇总

错误0:VS2017 import无法打开源文件 .../msado15.tlh (msado15.dll) 直接编译的话持续报错,重启项目即可。 错误1:“EndOfFile ”: 不是“_Recordset”的成员 解决方案:将注释行替换成后两行代码,重新编译即可。 //#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF") #import "c:\

m0_51849183的博客 1939

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

把sql sever 查询结果 转成 html table

-------------------------------------------把查询放入临时表---测试用例-- declare @temptablename varchar(100) select @temptablename='tempdb..##'+convert(varchar,convert(int, rand()*1000000))   ---防止全局临时表冲突.用ra

leecyi的专栏 5921

学生成绩管理系统数据库课程设计:一键管理学生课程及成绩

学生成绩管理系统数据库课程设计:一键管理学生课程及成绩 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今数字化校园的建设中,学生成绩管理系统的需求日益凸显。本文将为您详细介绍一款开源的学生成绩管理系统数据库课程设计,该系统旨在为高校学生提供一个便捷、高效的成绩管理平台,助你轻松应对数据库课程设计挑战。 项目技术分析 本项目采用C++-Qt进行可视化界面设计,结合S...

gitblog_06796的博客 754
上一篇: MybatisPlus多表连接查询
下一篇: Qt+ECharts开发笔记(一):ECharts介绍、下载和Qt调用ECharts基础柱状图Demo
AIGC镜像空间
博客等级 码龄5年 4万+粉丝 689原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值