QT通过ODBC连接GBase 8s数据库(Windows)示例
示例环境:
- 操作系统:Windows 10 64位
- 数据库及CSDK版本:GBase 8s V8.8_3.0.0_1 64位
- QT:5.12.0 64位
1,CSDK安装及ODBC配置
1.1,免安装版CSDK
下载免安装版的CSDK驱动,地址:https://gbasedbt.com/dl/odbc/GBase8s_3.0.0_1-Win64-ODBC-Driver.zip
解压到不含中文的目录下,如D盘根目录下,生成gbase8s-odbc-driver目录

使用管理员身份运行 00注册ODBC_管理员权限运行.cmd,将自动注册ODBC。

1.2,ODBC数据源配置
在ODBC数据库(64位)中配置数据源(DSN)

在用户DSN或者系统DSN中,创建新数据源,使用的驱动名称为GBase ODBC DRIVER(64-bit),名称为testdb

连接属性(Connection)和环境(Environment)按实际数据库相应值的进行配置


2,QT创建项目通过ODBC连接数据库测试
打开QT Creator,新建Qt Console Application项目

名称为QtOdbcGBasedbt,目录指定在D:\WORKDIR下

使用qmake编译系统

Kit Selection使用Desktop Qt 5.12.0 MinGW 64-bit

连接数据库操作,需要在QtOdbcGBasedbt.pro配置文件中,增加一行QT =+ sql

在main.cpp中编写连接数据库的代码(使用ODBC连接),可以使用DSN的方式(使用setDatabaseName(“ODBC数据源中配置的DSN名称”)),或者使用直连(DSN-Less)方式(使用setDatabaseName(“ODBC连接字符串(一般包含DRIVER、HOST、SERV、PROT、DB和SRVR等参数)”))

示例使用的完整main.cpp内容如下:
#include <QCoreApplication>
#include <QtSql>
#include <QSqlDatabase>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");// 使用DSN方式db.setDatabaseName("testdb"); //DSN名称// 使用DSN-Less连接方式//db.setDatabaseName("DRIVER={GBase ODBC DRIVER (64-bit)};HOST=h01.gbasedbt.com;SERV=9088;PROT=onsoctcp;DLOC=zh_CN.57372;CLOC=zh_CN.57372;DB=testdb;SRVR=gbase01");db.setUserName("gbasedbt"); //用户名db.setPassword("GBase123$%"); //密码bool ok = db.open();//建立数据库连接if(!ok){qDebug()<<"Can not connect to GBase 8s Database !";return -1;}qDebug()<<"Connect to GBase 8s Database OK .";QSqlQuery query(db);query.prepare("drop table if exists tab1");bool drop = query.exec();if (!drop){qDebug()<<"drop table error !";}qDebug()<<"drop table tab1 success .";query.prepare("create table tab1 (id varchar(255), ts datetime year to second default current year to second)");bool create = query.exec();if (!create){qDebug()<<"create table tab1 error !";}qDebug()<<"create table tab1 success .";query.prepare("insert into tab1(id) values('test001')");bool insert = query.exec();if (!insert){qDebug()<<"insert table tab1 error !";}qDebug()<<"insert table tab1 success .";query.prepare("select * from tab1 where id = :id");query.bindValue(":id","test001");bool select = query.exec();if (!select){qDebug()<<"select table tab1 error !";}QSqlRecord rec = query.record();while(query.next()){rec = query.record();QString value1 = query.value(0).toString();QString value2 = query.value(1).toString();qDebug()<<"id:"<<value1<<"\t"<<"ts:"<<value2;}db.close();return ok;
}
执行debug测试,输出显示操作成功。

附件:
QtOdbcGBasedbt.zip
相关文章:
QT通过ODBC连接GBase 8s数据库(Windows)示例
示例环境: 操作系统:Windows 10 64位数据库及CSDK版本:GBase 8s V8.8_3.0.0_1 64位QT:5.12.0 64位 1,CSDK安装及ODBC配置 1.1,免安装版CSDK 下载免安装版的CSDK驱动,地址:https:…...
Java-三个算法冒泡-选择排序,二分查找
Java算法: 冒泡排序; 解析:将前后两个数对比,将大的数(或小的)调换至后面,每轮将对比过程中的最大(或最小)数,调到最后面。每轮对比数减一;初始对比数为数组…...
docker版jxTMS使用指南:使用jxTMS提供数据
本文讲解了如何jxTMS的数据访问框架,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4…...
阿里 MySQL 规范
阿里 MySQL 规范 1. 建库建表规范 【推荐】库名与应用/服务名称尽量一致。 【强制】表名不使用复数名词。 说明:表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于DO类名也是单数形式,符合表达习惯。 【推荐】表的…...
C++ Primer阅读笔记--动态内存和智能指针
目录 1--动态内存管理 2--shared_ptr类 2-1--make_shared 函数 2-2--引用计数 2-3--get 3--new和delete 4--shared_ptr和new结合使用 5--unique_ptr 6--weak_ptr 1--动态内存管理 new:在动态内存中为对象分配空间并返回一个指向该对象的指…...
git分支管理策略
git的基础操作以及常用命令在上篇博客哦~ git原理与基本使用 1.分支管理 1.主分支 在版本回退⾥,我们已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线&…...
IntelliJ IDEA maven配置,设置pom.xml的配置文件
IntelliJ IDEA项目,选择 文件 设置,弹窗 构建、执行、部署 构建工具 Maven就可以 maven配置好以后,在pom.xml的配置文件中就可以设置对应的jar包了,这样构建的时候自动需要的jar,在项目中导入即 settings.xml文件apa…...
C#__使用Thread启动线程和传输数据
class Program{static void Test(){Console.WriteLine("Start……");Thread.Sleep(2000); // 1s等于1000ms,暂停2sConsole.WriteLine("end");}static void Download(Object ob){string str ob as string; // 遍历传递过来的ob字符串Console.Wr…...
appium2.0+ 单点触控和多点触控新的解决方案
在 appium2.0 之前,在移动端设备上的触屏操作,单手指触屏和多手指触屏分别是由 TouchAction 类,Multiaction 类实现的。 在 appium2.0 之后,这 2 个方法将会被舍弃。 "[Deprecated] TouchAction action is deprecated. Ple…...
记录一次Modbus通信的置位错误
老套路,一图胜千言,框图可能有点随意,后面我会解释 先描述下背景,在Modbus线程内有一个死循环,一直在读8个线圈的状态,该线程内读到的消息会直接发送给UI线程,UI线程会解析Modbus数据帧…...
数据结构--递归与分治
汉诺塔分析: 以三层进行分析,大于三层分析情况是一样的。 #include <stdio.h>void move(int n,char x,char y,char z) {if(1 n){printf("%c---------->%c\n",x,z);}else{move(n-1,x,z,y);//将第n-1个盘子从x借助z移动到y printf(&q…...
spring cloud gateway中出现503
spring cloud gateway中出现503 当搭建网关模块的时候出现503的错误的最大的可能就是没有设置负载均衡的依赖包 原先搭建的时候采用的是下面的方式进行设置的 gateway:discovery:locator:enabled: true #可以从nacos进行服务的发现 上面的这种方式可以直接进行注册和发现&…...
战略在集体学习过程中涌现
战略学习派:战略是涌现的学习过程,中国人的话,要交学习费!【安志强趣讲269期】 趣讲大白话:出来混总要交学费 **************************** 中国人有这个意识 新进一个领域,要交学费,有学习过程…...
html动态爱心代码【四】(附源码)
目录 前言 特效 完整代码 总结 前言 情人节马上就要到了,为了帮助大家高效表白,下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐,可用于520,情人节,生日,表白等场景,可直接使用。…...
如何利用SLF4J扩展模块实现高效的日志记录
如何利用SLF4J扩展模块实现高效的日志记录 摘要:SLF4J(Simple Logging Facade for Java)是一个用于 Java 程序中记录日志的简单门面,它提供了一种统一的日志记录接口,可以方便地切换底层的日志实现。SLF4J 还…...
通用语言模型蒸馏-GLMD
文章目录 GLMD一、PPT内容论文背景P1 BackgroundP2 Approach 相关知识P3 知识蒸馏P4 语言建模词预测逻辑 方法P5 两阶段词汇预测蒸馏P6P7 词汇压缩 实验结果P8 results 二、论文泛读2.1 论文要解决什么问题?2.2 论文采用了什么方法?2.4 论文达到什么效果…...
kafka--技术文档-基本概念-《快速了解kafka》
学习一种新的消息中间键,卡夫卡!!! 官网网址 Apache Kafka 基本概念 Kafka是一种开源的分布式流处理平台,由Apache软件基金会开发,用Scala和Java编写。它是一个高吞吐量的分布式发布订阅消息系统…...
ChatGPT:ChatGPT 的发展史,ChatGPT 优缺点以及ChatGPT 在未来生活中的发展趋势和应用
目录 1.ChatGPT 是什么 2. ChatGPT 的发展史 3.ChatGPT 优缺点 4.ChatGPT 在未来生活中的发展趋势和应用 5.ChatGPT经历了几个版本 1.ChatGPT 是什么 ChatGPT 是一个在线聊天机器人,可以与使用者进行语义对话和提供帮助。它可以回答各种问题,提供建议…...
【八股】2023秋招八股复习笔记4(MySQL Redis等)
文章目录 目录1、MySQLmysql索引实现mysql索引优化mysql索引失效的情况mysql 千万数据优化mysql 事务隔离级别 & 实现原理mysql MVCC版本链(undo log)mysql数据同步机制 & 主从复制 (binlog)mysql 日志&数据恢复&…...
【Unity】 Mesh 和 Mesh.subMeshCount
原文 https://www.cnblogs.com/hwx0000/p/12733582.html 什么是subMesh Mesh里面有这么一个参数mesh.subMeshCount,所以说明了subMesh是 属于 Mesh的,subMesh是mesh的子mesh,subMesh所有的顶点数据信息都来自于对应的Mesh,subMes…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
