当前位置: 首页 > news >正文

QT5.12.12通过ODBC连接到GBase 8s数据库(CentOS)

本示例使用的环境如下:

  • 硬件平台:x86_64(amd64)
  • 操作系统:CentOS 7.8 2003
  • 数据库版本(含CSDK):GBase 8s V8.8 3.0.0_1
    为什么使用QT 5.12.10?
  • 该版本包含QODBC。

1,GBase 8s数据库的ODBC安装与配置

1.1,确认操作系统已经安装unixODBC及unixODBC-devel

通过apt查找确认unixODBC及unixODBC-devel已经安装

[root@localhost ~]# rpm -qa unixODBC unixODBC-devel
unixODBC-devel-2.3.1-14.el7.x86_64
unixODBC-2.3.1-14.el7.x86_64

如果未安装使用apt源进行安装

[root@localhost ~]# yum -y install unixODBC unixODBC-devel

1.2,安装CSDK及配置ODBC

GBase 8s数据库的ODBC驱动程序包含在CSDK组件中。

1.2.1,安装CSDK

解压缩CSDK软件包

[root@localhost ~]# mkdir csdk
[root@localhost ~]# cd csdk/
[root@localhost csdk]# tar -xvf ../ clientsdk_3.0.0_1_93e040_RHLE6_x86_64.tar
csdk.properties
doc/
doc/Glsapi_machine_notes_4.10.txt
doc/Libcpp_machine_notes_4.10.txt
doc/ESQLC_machine_notes_4.10.txt
doc/Odbc_machine_notes_4.10.txt
installclientsdk
.gbase.properties

执行静默安装,自动完成安装

[root@localhost csdk]#  ./installclientsdk -i silent \-DUSER_INSTALL_DIR=/opt/gbase -DLICENSE_ACCEPTED=TRUE
序号参数名称示例参数值说明信息
1-isilent指定使用静默安装
2-DUSER_INSTALL_DIR=/opt/gbase指定安装目录
3-DLICENSE_ACCEPTED=TRUE指定接受协议

配置SQLHOSTS文件内容,在/opt/gbase/etc/sqlhosts配置文件中增加实际数据库地址

gbase01		onsoctcp	h01.gbasedbt.com	9088

1.2.2,ODBC配置

在/etc/profile配置文件里增加CSDK的配置环境

# /etc/profile
# Add for GBase 8s ODBC
export GBASEDBTDIR=/opt/gbase
export PATH=${GBASEDBTDIR}/bin:${PATH}
export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:$LD_LIBRARY_PATH
export GBASEDBTSQLHOSTS=/opt/gbase/etc/sqlhostsexport DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
export GL_USEGLU=1export ODBCINI=/etc/odbc.ini

配置/etc/odbcinst.ini配置文件,根据CSDK环境,配置如下:

; /etc/odbcinst.ini
; ODBC Driver for GBase 8s
[GBase ODBC DRIVER] 
Driver=/opt/gbase/lib/cli/iclit09b.so 
Setup=/opt/gbase/lib/cli/iclit09b.so 
APILevel=1 
ConnectFunctions=YYY 
DriverODBCVer=03.51 
FileUsage=0 
SQLLevel=1 
smProcessPerConnect=Y

配置ODBCINI配置文件,根据CSDK环境,配置如下:

[ODBC Data Sources]
testdb=GBase ODBC DRIVER
;
; Define ODBC Database Driver's Below - Driver Configuration Section
;
[testdb]
;Driver=/opt/gbase/lib/cli/iclit09b.so
Driver=GBase ODBC DRIVER
Description=GBase ODBC DRIVER
Database=testdb
LogonID=gbasedbt
pwd=GBase123
Servername=gbase01
CursorBehavior=0
CLIENT_LOCALE=zh_CN.utf8
DB_LOCALE=zh_CN.utf8
GL_USEGLU=1
TRANSLATIONDLL=/opt/gbase/lib/esql/igo4a304.so
; ISOLATIONLEVEL=1	# 使用该参数(简写:ISOLVL)设置默认的隔离级别,0-5
;
; UNICODE connection Section
;
[ODBC]
;uncomment the below line for UNICODE connection
UNICODE=UCS-2		# 如果需要使用unicode连接数据库,这里需要去除注释,值改为UCS-2
;
; Trace file Section
;
Trace=0
TraceFile=/tmp/odbctrace.out
InstallDir=/opt/gbase
TRACEDLL=idmrs09a.so

ODBC连接测试
确认当前用户环境变量中包括2)中配置的环境变量,3)已经完成。通过isql测试ODBC配置正确。

[root@localhost ~]# env | egrep '(GBASEDBT|ODBCINI)'
GBASEDBTSERVER=gbase01
ODBCINI=/etc/odbc.ini
GBASEDBTDIR=/opt/gbase
root@netsky:~# isql -v testdb
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select dbservername from dual;
+---------------------------------------+
|                                       |
+---------------------------------------+
| gbase01                               |
+---------------------------------------+
SQLRowCount returns -1
1 rows fetched
>
root@netsky:~# iusql -v testdb
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select dbservername from dual;
+---------------------------------------+
|                                       |
+---------------------------------------+
| gbase01                               |
+---------------------------------------+
SQLRowCount returns -1
1 rows fetched

2,QT在Linux(CentOS)的安装与配置

2.1,确认操作系统已经安装gcc和g++

通过apt查找确认gcc、g++、clang已经安装

[root@localhost ~]# rpm -qa gcc libgcc gcc-c++ clang clang-devel
clang-devel-3.4.2-8.el7.x86_64
gcc-4.8.5-44.el7.x86_64
clang-3.4.2-8.el7.x86_64
gcc-c++-4.8.5-44.el7.x86_64
libgcc-4.8.5-44.el7.x86_64

如果未安装使用apt源进行安装

[root@localhost ~]# yum -y install gcc libgcc gcc-c++ clang clang-devel

2.2,安装QT

这里使用5.12.12版本(安装包名称为qt-opensource-linux-x64-5.12.12.run),需要使用到图形化界面
配置环境变量.bash_profile

# .bash_profile
export QTPATH=/opt/Qt5.12.12
export PATH=${QTPATH}/5.12.12/gcc_64/bin:${QTPATH}/Tools/QtCreator/bin:$PATH

执行安装

[root@localhost ~]# ./qt-opensource-linux-x64-5.12.12.run
[2] Warning: Qt Account settings file [/root/.local/share/Qt/qtaccount.ini] does not exist.
[2] Warning: Could not find Qt Account.

开始安装,要求有Qt的账号,如果没有账号需要注册(如果想跳过该步,需要断网)
image001.png
接受协议
image002.png
指定安装目录
image003.png
选择安装组件,Qt 5.12.12中仅选择Desktop gcc 64-bit
image004.png
安装过程
image005.png
完成安装
image006.png
在 帮助->关于插件中,关闭ClangCodeModel,该操作需要重启才生效
image007.png

2.3,确认或编译QODBC驱动

查看Qt安装目录下的/opt/Qt5.12.12/5.12.12/gcc_64/plugins/sqldrivers

[root@localhost sqldrivers]# pwd
/opt/Qt5.12.12/5.12.12/gcc_64/plugins/sqldrivers
[root@localhost sqldrivers]# ls -al *odbc.so
-rwxr-xr-x. 1 root root 119352 11月 17 2021 libqsqlodbc.so

3,QT创建项目通过ODBC连接到GBase 8s数据库

创建新项目
创建Console Application
image008.png
名称为QtOdbcGBasedbt
image009.png
使用qmake
image010.png
image011.png

使用Desktop Qt 5.12.12 GCC 64bit
image012.png
image013.png

在QtOdbcGBasedbt.pro中增加一行QT += sql
image014.png
在main.cpp中写入代码
image015.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=/opt/gbase/lib/cli/iclit09b.so;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编译
image016.png

附件:
QtOdbcGBasedbt.zip

相关文章:

QT5.12.12通过ODBC连接到GBase 8s数据库(CentOS)

本示例使用的环境如下&#xff1a; 硬件平台&#xff1a;x86_64&#xff08;amd64&#xff09;操作系统&#xff1a;CentOS 7.8 2003数据库版本&#xff08;含CSDK&#xff09;&#xff1a;GBase 8s V8.8 3.0.0_1 为什么使用QT 5.12.10&#xff1f;该版本包含QODBC。 1&#…...

爱校对发布全新PDF校对工具,为用户带来更为便捷的校正体验

随着数字化文档使用的普及&#xff0c;PDF格式已经成为最为广泛使用的文件格式之一。为满足广大用户对于高效、准确PDF文档校对的需求&#xff0c;爱校对团队经过深入研发&#xff0c;正式推出全新的PDF校对工具&#xff01; 这一全新工具针对PDF文件格式进行了深度优化&#…...

记录protocol buffers Mac安装

使用brew安装最新的protobuf 在Mac 上安装&#xff0c;使用brew 可以安装最新的protobuf。这个也比较简单&#xff0c;简单说一下。 首先先检查一下是否安装了brew。如果没有安装brew的话&#xff0c;请先安装brew.可以通过brew --version来检查 使用brew install protobuf 来…...

基于Jenkins自动打包并部署docker、PHP环境,ansible部署-------从小白到大神之路之学习运维第86天

第四阶段提升 时 间&#xff1a;2023年8月23日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于Jenkins部署docker、PHP环境 目录 一、环境部署 &#xff08;一&#xff09;实验环境&#xff0c;服务器设置 &#xff08;二&#xff09;所有主机关闭防火墙和selinu…...

【附安装包】Midas Civil2019安装教程

软件下载 软件&#xff1a;Midas Civil版本&#xff1a;2019语言&#xff1a;简体中文大小&#xff1a;868.36M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.…...

Apache StreamPark系列教程第一篇——安装和体验

一、StreamPark介绍 实时即未来,在实时处理流域 Apache Spark 和 Apache Flink 是一个伟大的进步,尤其是Apache Flink被普遍认为是下一代大数据流计算引擎, 我们在使用 Flink & Spark 时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 我们将一些好的经验…...

mysql replace insert update delete

目录 mysql replace && insert && update && delete replace mysql replace && insert && update && delete replace 我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引&#xff0c;当我们再向…...

实现SSM简易商城项目的商品查询功能

实现SSM简易商城项目的商品查询功能 介绍 在SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架下&#xff0c;我们可以轻松地实现一个简易商城项目。本博客将重点介绍如何实现商品查询功能&#xff0c;帮助读者了解并掌握该功能的开发过程。 步骤 1. 创建数据库表 首…...

视频批量剪辑矩阵分发系统源码开源分享----基于PHP语言

批量剪辑视频矩阵分发&#xff1a; 短视频seo主要基于抖音短视频平台&#xff0c;为企业实现多账号管理&#xff0c;视频分发&#xff0c;视频批量剪辑&#xff0c;抖音小程序搭建&#xff0c;企业私域转化等&#xff0c;本文主要介绍短视频矩阵系统抖音小程序开发详细及注意事…...

亚信科技AntDB数据库通过GB 18030-2022最高实现级别认证,荣膺首批通过该认证的产品之列

近日&#xff0c;亚信科技AntDB数据库通过GB 18030-2022《信息技术 中文编码字符集》最高实现级别&#xff08;级别3&#xff09;检测认证&#xff0c;成为首批通过该认证的数据库产品之一。 图1&#xff1a;AntDB通过GB 18030-2022最高实现级别认证 GB 18030《信息技术 中文编…...

第11章 优化多线程应用程序

对软件来说&#xff0c;为持续增长的CPU核数做好准备&#xff0c;对应用程序在未来的成功至关重要。 11.1 性能扩展和开销 通过可伸缩定律将计算单元&#xff08;线程&#xff09;之间的通信描述为影响性能的另一个门控因素。通用可伸缩定律描述性能劣化由多个因素导致&#…...

分布式下的session共享问题

首页我们确定在分布式的情况下session是不能共享的。 1.不同的服务&#xff0c;session不能共享&#xff0c;也就是微服务的情况下 2.同一服务在分布式情况&#xff0c;session同样不能共享&#xff0c;也会是分布式情况 分布式下session共享问题解决方案(域名相同) 1.session复…...

webrtc的Sdp中的Plan-b和UnifiedPlan

在一些类似于视频会议场景下&#xff0c;媒体会话参与者需要接收或者发送多个流&#xff0c;例如一个源端&#xff0c;同时发送多个左右音轨的音频&#xff0c;或者多个摄像头的视频流&#xff1b;在2013年&#xff0c;提出了2个不同的SDP IETF草案Plan B和Unified Plan&#x…...

LLM-Rec:基于提示大语言模型的个性化推荐

1. 基本信息 论文题目:LLM-Rec: Personalized Recommendation via Prompting Large Language Models 作者:Hanjia Lyu, Song Jiang, Hanqing Zeng, Yinglong Xia, Jiebo Luo 机构:University of Rochester, University of California Los Angeles, Meta AI, University of Ro…...

microsoft -en - us 无法卸载

因为office2013 有漏洞&#xff0c;要进行升级&#xff0c;弄了个office2016&#xff0c;提示无法安装&#xff0c; microsoft visio -en - us 即点即用的存在。点击各种卸载&#xff0c;都无法生效。 再去搜了下软件使用评论&#xff0c;里面提到geek 可以卸载&#xff0c;下…...

day43参与通信的服务器

1.题目描述 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列&#xff0c;我们就认为它们之间可以进行通信。 请你统计并返回能够与至少…...

K8S如何部署ZooKeeper以及如何进行ZooKeeper的平滑替换

前言 在之前的章节中&#xff0c;我们已经成功地将Dubbo项目迁移到了云环境。在这个过程中&#xff0c;我们选择了单机ZooKeeper作为注册中心。接下来&#xff0c;我们将探讨如何将单机ZooKeeper部署到云端&#xff0c;以及在上云过程中可能遇到的问题及解决方案。 ZooKeeper…...

Leetcode刷题之1658. 将 x 减到 0 的最小操作数

题目: 算法分析: 可以看出,这道题本意是从计算两侧和为x 的数字, 要求数量最少, 那我们可以反向思考, 假如整个数组的和为sum, 那么我们就可以求中间部分和为sum-x的数字(当然必须连续), 当中间部分的数字同时达到和为sum-x以及长度最长两个要求时, 两侧数字也就达到了和为x以…...

海外网红营销中的创新技术与趋势:AI、AR和VR的应用探索

随着全球数字化时代的不断发展&#xff0c;互联网已经成为连接人们的桥梁&#xff0c;而社交媒体则在其中扮演着举足轻重的角色。在这个全球性的社交媒体网络中&#xff0c;海外网红以其独特的个人魅力和内容创作能力迅速崭露头角。而为了在竞争激烈的市场中脱颖而出&#xff0…...

Vant 4.6.4发布,增加了一些新功能,并修复了一些bug

导读Vant 4.6.4发布,增加了一些新功能&#xff0c;并修复了一些bug等。 新功能 feat(area-data): 更新芜湖的县区数据&#xff0c;由 nivin-studio 在 #12122 中贡献feat(Locale): 添加塞尔维亚语到国际化&#xff0c;由 RogerZXY 在 #12145 中贡献feat(ImagePreview): 添加 c…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...