Qt连接SQL server数据库

2023-10-30


Qt连接SQL server数据库

由于课程设计需要,需要用qt设计一个界面来操作数据库,在建立数据库连接时,期间遇到各种问题。

Qt 连接SQL server数据大致可以概括为下图的三层模型,箭头代表他们之间的依赖关系

第一步:建立目标数据库

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

如建立一个名为Student 的数据库,其中有Student表、Course表和SC三个表。这里使用的是数据库版本为 SQL Server 2008 R2。


第二步:配置数据库数据源

在配置数据源之前,要确保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 配置管理器,选择SQL Server网络配置。



右键TCP/IP,选择属性查看其默认端口,设置其为1433



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

Qt数据库驱动并不能直接连接到SQL Server中的数据库,而是要通过配置ODBC数据源来进行连接。

开始->搜索ODBC->点击dBASE Files 选择添加



选择SQL Server



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





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

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


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


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



第三步 Qt连接数据源

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

Qt 提供了多种数据的驱动,可以在帮助文档搜索sql中找到



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



建立连接的代码:

#include <QApplication>
#include <QDialog>
#include"mainwindow.h"
#include<connection.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("QTDSN");      //数据源名称
    db.setHostName("localhost");                        //选择本地主机,127.0.1.1
    db.setDatabaseName(dsn);                            //设置数据源名称
    db.setUserName("sa");                               //登录用户
    db.setPassword("xwz123");                           //密码
    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就连接上数据库了,其他数据库连接过程类似在连接过程中需注意的几个问题:

  • 确保1433号端口已经打开
  • 确认SQL Server 网络配置的TCP/IP协议已启用。
  • 正确配置ODBC数据源
  • 正确建立连接,登录名和登录密码为数据库中已存在的登录用户

接下来对数据库的界面操作,可以参考这篇博文:http://hhuayuan.blog.51cto.com/1630327/893415


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt连接SQL server数据库 的相关文章

随机推荐

  • 时序预测

    时序预测 MATLAB实现基于BP神经网络的时间序列预测 递归预测未来 多指标评价 目录 时序预测 MATLAB实现基于BP神经网络的时间序列预测 递归预测未来 多指标评价 预测结果 基本介绍 程序设计 参考资料 预测结果 基本介绍 Mat
  • IOS7手势识别

    添加一个view 给view加上各种手势查看效果 UIView gestureTestView UIView alloc initWithFrame CGRectMake 100 100 200 200 gestureTestView ba
  • AI开源项目分享:pytorch增强图像数据、Tensorflow 2.0实现...

    文末免费送电子书 七月在线干货组最新 升级的 名企AI面试100题 免费送 项目一 igel 无需编写代码即可训练 测试和使用模型 一个令人愉悦的机器学习工具 可让您无需编写代码即可训练 拟合 测试和使用模型 该项目的目标是为技术用户和非技
  • Windows server 2008 r2关于SMB签名未配置的漏洞修复

    一 漏洞描述 SMB签名未配置漏洞是指 远程SMB服务器上未配置需要签名 这将导致未经身份验证的远程攻击者可以利用此漏洞对SMB服务器进行中间人攻击 SMB是一个协议名 全称是Server Message Block 服务器消息快协议 用于
  • 第二十三篇:UE Ceisum开发之如何加载本地地形及经纬度、空间坐标相互转化

    本篇是基于Cesium for Unreal这个插件 基本入门我这里就不多说了 不会的人可以先跟着这个教程学习一下 Cesium for Unreal快速入门 本篇重点讲述一下如何加载本地地形 1 准备工作 安装最新的Cesiumlab软件
  • JavaScript中的事件循环(event loop)机制

    聚沙成塔 每天进步一点点 专栏简介 调用栈 Call Stack 消息队列 Message Queue 事件循环 Event Loop 宏任务和微任务 示例 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 记得点击上方或者右侧链
  • C#报错:线程间操作无效: 从不是创建控件“XXXX”的线程访问它

    看到一篇很好的博文 如果只是测试用的 不需要上位机多稳定 直接用第一种方法 非常nice 在zhihu上看到的一篇文章 C 线程间操作无效 从不是创建控件 dataGridView 的线程访问它 知乎 https zhuanlan zhih
  • Nginx启动时提示nginx: [emerg] still could not bind()

    今天跟着视频学习Nginx时 启动Nginx报这个nginx emerg still could not bind 于是在网上找了解决方法在这里分享出来 报错界面 解决方法 1 根据Nginx配置文件查看配置的端口默认的是80端口 然后我们
  • PTA 浙大版《C语言程序设计(第3版)》题目集 练习5-2

    本题要求对两个整数a和b 输出其中较大的数 函数接口定义 int max int a int b 其中a和b是用户传入的参数 函数返回的是两者中较大的数 裁判测试程序样例 include
  • 小博客练习

    博客 简单的综合运用 一 了解博客需求 1 主要的分为前台和后台 后台 注册登录 登录 登录 分类管理 显示分类 编辑分类 添加分类 删除分类 文章管理 显示文章 编辑文章 添加文章 删除文章 用户管理 标签管理 等等功能 前台 首页面 列
  • linux常用命令总结

    linux常用命令总结 1 在根目录下查找xxx文件 2 列出程序启动时搜索库路径的过程 3 查看程序或so的依赖 1 查看Test程序依赖的so文件 2 也可以查看so依赖的文件 4 SSH相关 5 查看当前登录的用户 6 查看重启 登录
  • Java面试题整理-高并发篇

    1 synchronized的实现原理以及锁优化 synchronized原理分析 遇见更好的自己 的博客 CSDN博客Java 高并发专题之synchronized关键字1 synchronized作为jvm关键字有三个作用域synchr
  • rancher部署

    Rancher 管理 Kubernetes 集群 Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台 实现了 Kubernetes 集群在混合云 本地数据中心的集中部署与管理 以确保集群的安全性
  • 在脚本中 使用数组 获取列表中选中的复选框id + 获取选中的单选框的值

    var chk value 定义一个数组 input name communicateTeacher claIds checked each function 遍历每一个名字为interest的复选框 其中选中的执行函数 chk value
  • Pandas提取指定行列

    取列 1 通过列名称来提取指定列 推荐 列名 irline sentiment gold name negativereason gold retweet count text get data data airline sentiment
  • kafka基础学习(六):kafka 代码示例

    kafka 代码示例 生成者API在不同版本间无较大变动 消费者 Consumer 提供了两套API 低版本 8 0版本及其以前 API 高版本 8 0版本后 API 两种API的优缺点 高版本Consumer API 优点 高级API写起
  • Qt-UI 界面工具库简介

    一 关于Qt UI界面工具库 Qt UI界面工具库是武汉维仕杰科技有限公司基于Qt上进行扩展开发的控件包和界面工具 并且拥有完全自主的知识产权 得益于丰富的界面开发经验和强大的支持团队 使得Qt UI界面开发工具成为最专业 功能强大的Qt开
  • 他在 B 站有 178 万粉丝,今天免费带你玩转 Python

    近几年 编程越来越火 网上也是铺天盖地的免费教程 中小学生都开始投入到学习中 编程学习从娃娃抓起 甚至有些小学生都做起了 UP 主 教大家学编程 光从编程的难易度来说 Python 简单 易学 零基础 跨专业都很容易上手 想学全网超详细 P
  • Linux内核配置选项详解

    对于每一个配置选项 用户可以回答 y m 或 n 其中 y 表示将相应特性的支持或设备驱动程序编译进内核 m 表示将相应特性的支持或设备驱动程序编译成可加载模块 在需要时 可由系统或用户自行加入到内核中去 n 表示内核不提供相应特性或驱动程
  • Qt连接SQL server数据库

    Qt连接SQL server数据库 由于课程设计需要 需要用qt设计一个界面来操作数据库 在建立数据库连接时 期间遇到各种问题 Qt 连接SQL server数据大致可以概括为下图的三层模型 箭头代表他们之间的依赖关系 第一步 建立目标数据