Ubuntu20 QT6.0 编译 ODBC 驱动

一、新建测试项目

新建一个控制台项目,

// main.cpp #include <QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 获取当前Qt支持的驱动列表QStringList drivers = QSqlDatabase::drivers();foreach (QString driver, drivers){qDebug() << driver;}return a.exec();
}
// pro 开启 SQL 模块
QT += sql

可以看到,现在只支持 SQLITE ,

二、安装 ODBC 相关依赖    

在安装目录下 /qt-everywhere-src-6.0.0/qtbase/src/plugins/sqldrivers 可以看到各种数据库驱动源码,准备通过 QT 编译 odbc ,

在此之前先安装 odbc 开发包,

# 安装 odbc 开发包
sudo apt install -y unixodbc-dev# 安装 odbc 管理工具
sudo apt install -y unixodbc# 输出 odbc 配置信息
odbcinst -j 

安装 ODBC MSSQL 驱动,

# 微软官方文档 https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15&tabs=ubuntu18-install%2Cubuntu17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline#ubuntu18curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asccurl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.listsudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17

三、安装 SQL Server(可选)

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.ascsudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"sudo apt-get install -y mssql-server# 查看状态
sudo systemctl status mssql-server --no-pager

四、通过 QT 编译 ODBC

使用 QT 打开 odbc.pro 项目,会报错找不到库,

需要配置一下 odbc.pro 文件,

# odbc.proTARGET = qsqlodbcHEADERS += $$PWD/qsql_odbc_p.h
SOURCES += $$PWD/qsql_odbc.cpp $$PWD/main.cpp#QMAKE_USE += odbc
unix: DEFINES += UNICODEOTHER_FILES += odbc.json# add odbc lib
LIBS += -L/usr/lib/x86_64-linux-gnu/ -lodbc
INCLUDEPATH += /usr/include/x86_64-linux-gnuPLUGIN_CLASS_NAME = QODBCDriverPlugin
include(../qsqldriverbase.pri)

然后构建项目即可,最终可以在安装目录下找到对应生成的动态库,

到这里,QT 已经支持 ODBC 数据库了,

五、QT 连接  MSSQL

配置 ODBC 数据源,

# 输出 odbc 配置信息
odbcinst -j # odbcinst.ini 保存的是驱动信息 DRIVERS............: /etc/odbcinst.ini
# odbc.ini 保存的是系统数据源信息 SYSTEM DATA SOURCES: /etc/odbc.inivim /etc/odbc.ini
# 添加以下配置
[mssql]
Driver=ODBC Driver 17 for SQL Server
PORT=1433
SERVER=localhost
Database=mytestdb
#USER=sa
#Password=123456789# 连接测试
isql mssql sa 123456789

这时候就能正常连接数据库了,接下来使用 QT 连接数据库,

// main.cpp
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>int main(int argc, char *argv[])
{// 数据库配置QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");// 配置系统数据源信息,对应 odbc.ini 文件的配置QString dsn = QString::fromLocal8Bit("mssql");// 数据源名称db.setDatabaseName(dsn);// 服务器名称db.setHostName("localhost");// 端口db.setPort(1433);// 用户名db.setUserName("sa");// 密码db.setPassword("123456789");// 数据库连接bool ok = db.open();if(ok){qDebug() << "db open ok!";}else {qDebug() << "db open error: " << db.lastError();}// 数据库关闭db.close();return 0;
}

或者使用 Qstring 连接,

// main.cpp
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>int main(int argc, char *argv[])
{// 数据库配置QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");// 配置驱动与数据库账号密码等信息,相当于 odbc.ini 文件QString dsn = QString("DRIVER={MSSQL};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4;IC=MS-SQL").arg("localhost").arg("master").arg("sa").arg("123456789");// 数据源名称db.setDatabaseName(dsn);// 数据库连接bool ok = db.open();if(ok){qDebug() << "db open ok!";}else {qDebug() << "db open error: " << db.lastError();}// 数据库关闭db.close();return 0;
}

六、彩蛋:自定义代码格式化

实际上,Qt Creator 自带 C++ 的代码格式化,如果需要自定义自己的代码格式化风格,则可以参考一下方法,

# 安装 C 格式化工具
sudo apt install clang-format

打开 QT 菜单【帮助】->【关于插件】,输入

Beautifier

点击工具下的“Beautifier”选项,选中“格式化当前文件”即可实现代码格式化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147367.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法----递归

1、迷宫回溯问题 package com.yhb.code.datastructer.recursion&#xffe5;5;public class MiGong {public static void main(String[] args) {// 先创建一个二维数组&#xff0c;模拟迷宫// 地图int[][] map new int[8][7];// 使用1 表示墙// 上下全部置为1for (int i 0; i…

毛玻璃动画交互效果

效果展示 页面结构组成 从上述的效果展示页面结构来看&#xff0c;页面布局都是比较简单的&#xff0c;只是元素的动画交互比较麻烦。 第一个动画交互是两个圆相互交错来回运动。第二个动画交互是三角绕着圆进行 360 度旋转。 CSS 知识点 animationanimation-delay绝对定位…

Golang语法、技巧和窍门

Golang简介 命令式语言静态类型语法标记类似于C&#xff08;但括号较少且没有分号&#xff09;&#xff0c;结构类似Oberon-2编译为本机代码&#xff08;没有JVM&#xff09;没有类&#xff0c;但有带有方法的结构接口没有实现继承。不过有type嵌入。函数是一等公民函数可以返…

解决仪器掉线备忘

网络管控越来越严格&#xff0c;老的Mac模式连接的仪器经常断开&#xff0c;要么是网络没活动被断开TCP了&#xff0c;要么是网络波动无法保持TCP。每次重启仪器控制很麻烦&#xff0c;基于之前用M写http服务的基础上改进仪器接口连接。 参照之前实现http服务的逻辑 最终逻辑 …

如何解决版本不兼容Jar包冲突问题

如何解决版本不兼容Jar包冲突问题 引言 “老婆”和“妈妈”同时掉进水里&#xff0c;先救谁&#xff1f; 常言道&#xff1a;编码五分钟&#xff0c;解冲突两小时。作为Java开发来说&#xff0c;第一眼见到ClassNotFoundException、 NoSuchMethodException这些异常来说&…

VRRP配置案例(路由走向分析,端口切换)

以下配置图为例 PC1的配置 acsw下行为access口&#xff0c;上行为trunk口&#xff0c; 将g0/0/3划分到vlan100中 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname acsw [acsw] Sep 11 2023 18:15:48-08:00 acsw DS/4/DATASYNC_CFGCHANGE:O…

再次总结nios II 下载程序到板子上时出现 Downloading RLF Process failed的问题

之前也写过两篇关于NIOS II 出现&#xff1a;Downloading RLF Process failed的问题&#xff0c;但是总结都不是很全面&#xff0c;小梅哥的教程总结的比较全面特此记录。 问题&#xff1a;nios II 下载程序到板子上时出现 Downloading RLF Process failed的问题。 即当nios中…

《Jetpack Compose从入门到实战》 第二章 了解常用UI组件

目录 常用的基础组件文字组件图片组件按钮组件选择器组件对话框组件进度条组件 常用的布局组件布局Scaffold脚手架 列表 书附代码 Google的图标库 常用的基础组件 文字组件 Composable fun TestText() {Column(modifier Modifier.verticalScroll(state rememberScrollState…

Ubuntu20.04.1编译qt6.5.3版mysql驱动

下载qtbase6.5.3源码&#xff0c;将plugin中sqldrivers源码拷至于项目工程中&#xff0c;使用qtcreator打开文件 1、下载mysql开发库 sudo apt-get update sudo apt-get install build-essential libmysqlclient-dev 2、在msyql子目录中CMakeLists.txt第一行添加头文件、引…

浏览器指定DNS

edge--设置 https://dns.alidns.com/dns-query

前端页面初步开发

<template><div><el-card class"box-card" style"height: 620px"><el-input v-model"query.name" style"width:200px" placeholder"请输入用户姓名"></el-input>&nbsp&nbsp&nbsp…

yolov8 opencv模型部署(C++版)

yolov8 opencv模型部署&#xff08;C 版&#xff09; 使用opencv推理yolov8模型&#xff0c;仅依赖opencv&#xff0c;无需其他库&#xff0c;以yolov8s为例子&#xff0c;注意&#xff1a; 使用opencv4.8.0 &#xff01;使用opencv4.8.0 &#xff01;使用opencv4.8.0 &#…

有时候,使用 clang -g test.c 编译出可执行文件后,发现 gdb a.out 进行调试无法读取符号信息,为什么?

经过测试&#xff0c;gdb 并不是和所有版本的 llvm/clang 都兼容的 当 gdb 版本为 9.2 时&#xff0c;能支持 9.0.1-12 版本的 clang&#xff0c;但无法支持 16.0.6 版本的 clang 可以尝试使用 LLVM 专用的调试器 lldb 我尝试使用了 16.0.6 版本的 lldb 调试 16.0.6 的 clan…

string类的使用方式的介绍

目录 前言 1.什么是STL 2. STL的版本 3. STL的六大组件 4.STL的缺陷 5.string 5.1 为什么学习string类&#xff1f; 5.1.1 C语言中的字符串 5.2 标准库中的string类 5.3 string类的常用接口的使用 5.3.1 构造函数 5.3.2 string类对象的容量操作 5.3.3 string类对象…

Multiple CORS header ‘Access-Control-Allow-Origin‘ not allowed

今天在修改天天生鲜超市项目的时候&#xff0c;因为使用了前后端分离模式&#xff0c;前端通过网关统一转发请求到后端服务&#xff0c;但是第一次使用就遇到了问题&#xff0c;比如跨域问题&#xff1a; 但是&#xff0c;其实网关里是有配置跨域的&#xff0c;只是忘了把前端项…

画CMB天图使用Planck配色方案

使用Planck的配色方案&#xff1a; 全天图&#xff1a; 或者方形图&#xff1a; 使用下面设置即可&#xff1a; import pspy, pixell from pspy.so_config import DEFAULT_DATA_DIR pixell.colorize.mpl_setdefault("planck")此方法不会改变matplotlib默认配色方案…

虚拟机安装 centos

title: 虚拟机安装 centos createTime: 2020-12-13 12:00:27 updateTime: 2020-12-13 12:00:27 categories: linux tags: 虚拟机安装 centos 路线图 主机(宿主机) —> centos --> docker --> docker 镜像 --> docker 容器 — docker 服务 1.前期准备 一台 主机 或…

分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测

分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测&#xff0…

TensorFlow入门(一、环境搭建)

一、下载安装Anaconda 下载地址:http://www.anaconda.comhttp://www.anaconda.com 下载完成后运行exe进行安装 二、下载cuda 下载地址:http://developer.nvidia.com/cuda-downloadshttp://developer.nvidia.com/cuda-downloads 下载完成后运行exe进行安装 安装后winR cmd进…

JAVA面经整理(5)

创建线程池不是说现用先创建&#xff0c;而是要是可以复用线程池中的线程&#xff0c;就很好地避免了大量用户态和内核态的交互&#xff0c;不需要频繁的创建和销毁线程 一)什么是池化技术&#xff1f;什么是线程池&#xff1f; 1)池化技术是提前准备好一些资源&#xff0c;在…