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目录
image001.png
使用管理员身份运行 00注册ODBC_管理员权限运行.cmd,将自动注册ODBC。
image003.png

1.2,ODBC数据源配置

在ODBC数据库(64位)中配置数据源(DSN)
image005.png
在用户DSN或者系统DSN中,创建新数据源,使用的驱动名称为GBase ODBC DRIVER(64-bit),名称为testdb
image007.png
连接属性(Connection)和环境(Environment)按实际数据库相应值的进行配置
image009.png
image011.png

2,QT创建项目通过ODBC连接数据库测试

打开QT Creator,新建Qt Console Application项目
image013.png
名称为QtOdbcGBasedbt,目录指定在D:\WORKDIR下
image015.png
使用qmake编译系统
image017.png
Kit Selection使用Desktop Qt 5.12.0 MinGW 64-bit
image019.png
连接数据库操作,需要在QtOdbcGBasedbt.pro配置文件中,增加一行QT =+ sql
image021.png
在main.cpp中编写连接数据库的代码(使用ODBC连接),可以使用DSN的方式(使用setDatabaseName(“ODBC数据源中配置的DSN名称”)),或者使用直连(DSN-Less)方式(使用setDatabaseName(“ODBC连接字符串(一般包含DRIVER、HOST、SERV、PROT、DB和SRVR等参数)”))
image023.png
示例使用的完整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测试,输出显示操作成功。
image025.png

附件:
QtOdbcGBasedbt.zip

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(vue)el-table 怎么把表格列中相同的数据 合并为一行

(vue)el-table 怎么把表格列中相同的数据 合并为一行 效果&#xff1a; 文档解释&#xff1a; 写法&#xff1a; <el-table:data"tableData"size"mini"class"table-class"borderstyle"width:100%"max-height"760":span-…

【应用层】网络基础 -- HTTPS协议

HTTPS 协议原理加密为什么要加密常见的加密方式对称加密非对称加密 数据摘要&&数据指纹 HTTPS 的工作过程探究方案1-只使用对称加密方案2-只使用非对称加密方案3-双方都使用非对称加密方案4-非对称加密对称加密中间人攻击-针对上面的场景 CA认证理解数据签名方案5-非对…

【Django】 Task5 DefaultRouter路由组件和自定义函数

文章目录 【Django】 Task5 DefaultRouter路由组件和自定义函数1.路由组件1.1路由组件介绍1.2SimpleRouter1.3DefaultRouter1.4DefaultRouter示例1.5查看访问服务接口url 2.自定义函数 【Django】 Task5 DefaultRouter路由组件和自定义函数 Task5 主要了解了DefaultRouter路由…

sql语句中的ddl和dml

操作数据库&#xff1a;CRUD C&#xff08;create&#xff09; 创建 *数据库创建出来默认字符集为utf8 如果要更改字符集就 Create database 名称 character set gbk&#xff08;字符集&#xff09; *创建数据库&#xff1a;create database 名称 *先检查是否有该数据库在…

Mac常见恶意软件再现,办公应用程序潜藏风险如何防范?

Mac电脑正受到臭名昭著的XLoader恶意软件的新变种的攻击&#xff0c;该恶意软件已被重写为在最好的MacBook上本地运行。 虽然XLoader至少从2015年开始出现&#xff0c;但在2021年发现macOS变体之前&#xff0c;它主要用于针对Windows PC。然而&#xff0c;该版本是作为Java程序…

go:正确引入自己编写的包(如何在 Go 中正确引入自己编写的包)

前言 目录如下&#xff1a; 具体教程 1. 工作空间&#xff08;我的是根目录&#xff09;新建 go.work 文件 文件内容如下&#xff1a; go 1.21.0use (./tuchuang./tuchuang/testm ) 2. 添加go.mod文件 1. 包文件夹下 进入testm目录执行 go mod init testModule 2. 引用目…

订单状态定时处理、来单提醒和客户催单

一、Spring Task 1.1 基本介绍 1.2 cron表达式 cron表达式其实就是一个字符串&#xff0c;通过cron表达式可以定义任务触发的时间 构成规则&#xff1a;分为6或7个域&#xff0c;由空格分隔开&#xff0c;每个域代表一个含义 每个域的含义分别为&#xff1a;秒、分钟、小时、日…

力扣 337. 打家劫舍 III

题目来源&#xff1a;https://leetcode.cn/problems/house-robber-iii/description/ C题解1&#xff08;来源代码随想录&#xff09;&#xff1a;本题一定是要后序遍历&#xff0c;因为通过递归函数的返回值来做下一步计算。本题关键是要讨论当前节点抢还是不抢。如果抢了当前节…

ubuntu20.04 直接安装vpp23.06 测试双 VPP Tunnel Ike2

环境信息&#xff1a;VMware Workstation 17 Pro ubuntu20.04 (清华源) ubuntu 源点进去选&#xff1a;ubuntu-22.04.3-desktop-amd64.iso 如果之前装过VPP&#xff0c;用以下命令确定是否卸载干净&#xff1a; dpkg -l | grep vpp dpkg -l | grep DPDK 卸载&#xff1a; …

数据采集:selenium 获取某网站CDN 商家排名信息

写在前面 工作中遇到&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对大…

系统架构:数据库

文章目录 数据库设计关系代数规范化理论求候选键特殊函数依赖Armstrong公理范式无损分解 数据库设计 步骤产出说明1.根据数据要求和处理要求进行需求分析数据流图、数据字典、需求说明书等分析数据流向、数据详细含义等&#xff0c;分析具体需求2.对现实世界进行抽象&#xff0…

你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?

一、什么是SPA SPA&#xff08;single-page application&#xff09;&#xff0c;翻译过来就是单页应用SPA是一种网络应用程序或网站的模型&#xff0c;它通过动态重写当前页面来与用户交互&#xff0c;这种方法避免了页面之间切换打断用户体验在单页应用中&#xff0c;所有必…

基于Java+SpringBoot+Vue前后端分离工厂车间管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

代码随想录算法训练营第四十六天 | 139.单词拆分

代码随想录算法训练营第四十六天 | 139.单词拆分 139.单词拆分 139.单词拆分 题目链接 视频讲解 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典…

lnmp架构-mysql1

1.MySQL数据库编译 make完之后是这样的 mysql 初始化 所有这种默认不在系统环境中的路径里 就这样加 这样就可以直接调用 不用输入路径调用 2.初始化 重置密码 3.mysql主从复制 配置master 配置slave 当master 端中还没有插入数据时 在server2 上配slave 此时master 还没进…

研磨设计模式day12迭代器模式

目录 场景 解决方案 解决思路 代码示例 代码改造 Java实现迭代器 迭代器模式的优点 思考 何时选用 场景 大公司收购了一个小公司&#xff0c;大公司的工资系统采用List来记录工资列表&#xff0c;而小公司是采用数组&#xff0c;老板希望通过决策辅助系统来统一查看…

Spring事务的隔离级别

使用事务隔离级别可以控制并发事务在同时执行时的某种行为。 前言&#xff1a; 在学习Spring事务隔离级别前我们先了解一下什么是脏读&#xff0c;幻读&#xff0c;不可重复读。 脏读&#xff1a; 一个事务读到另一个事务未提交的更新数据&#xff0c;所谓脏读&#xff0c;就…

软件测试用例经典方法 | 逻辑覆盖测试法及案例【文末赠书】

逻辑覆盖测试法是常用的一类白盒测试方法&#xff0c;其以程序内部逻辑结构为基础&#xff0c;通过对程序逻辑结构的遍历来实现程序测试的覆盖。逻辑覆盖测试法要求测试人员对程序的逻辑结构有清晰的了解。 逻辑覆盖测试法是一系列测试过程的总称&#xff0c;是使测试过程逐渐…

如何使用CSS实现一个平滑滚动到页面顶部的效果(回到顶部按钮)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 平滑滚动到页面顶部的效果&#xff08;回到顶部按钮&#xff09;⭐ 创建HTML结构⭐ 编写CSS样式⭐ 编写JavaScript函数⭐ 添加滚动事件监听器⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右…

Linux环境搭建SVN服务器并实现公网访问 - cpolar端口映射

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…