网站广告条素材,百度网站架构,网站制作价格推 荐,抖音代运营商本示例使用的环境如下#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#…本示例使用的环境如下
硬件平台x86_64amd64操作系统CentOS 7.8 2003数据库版本含CSDKGBase 8s V8.8 3.0.0_1 为什么使用QT 5.12.10该版本包含QODBC。
1GBase 8s数据库的ODBC安装与配置
1.1确认操作系统已经安装unixODBC及unixODBC-devel
通过apt查找确认unixODBC及unixODBC-devel已经安装
[rootlocalhost ~]# rpm -qa unixODBC unixODBC-devel
unixODBC-devel-2.3.1-14.el7.x86_64
unixODBC-2.3.1-14.el7.x86_64如果未安装使用apt源进行安装
[rootlocalhost ~]# yum -y install unixODBC unixODBC-devel1.2安装CSDK及配置ODBC
GBase 8s数据库的ODBC驱动程序包含在CSDK组件中。
1.2.1安装CSDK
解压缩CSDK软件包
[rootlocalhost ~]# mkdir csdk
[rootlocalhost ~]# cd csdk/
[rootlocalhost 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执行静默安装自动完成安装
[rootlocalhost csdk]# ./installclientsdk -i silent \-DUSER_INSTALL_DIR/opt/gbase -DLICENSE_ACCEPTEDTRUE序号参数名称示例参数值说明信息1-isilent指定使用静默安装2-DUSER_INSTALL_DIR/opt/gbase指定安装目录3-DLICENSE_ACCEPTEDTRUE指定接受协议
配置SQLHOSTS文件内容在/opt/gbase/etc/sqlhosts配置文件中增加实际数据库地址
gbase01 onsoctcp h01.gbasedbt.com 90881.2.2ODBC配置
在/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_LOCALEzh_CN.utf8
export CLIENT_LOCALEzh_CN.utf8
export GL_USEGLU1export 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
APILevel1
ConnectFunctionsYYY
DriverODBCVer03.51
FileUsage0
SQLLevel1
smProcessPerConnectY配置ODBCINI配置文件根据CSDK环境配置如下
[ODBC Data Sources]
testdbGBase ODBC DRIVER
;
; Define ODBC Database Drivers Below - Driver Configuration Section
;
[testdb]
;Driver/opt/gbase/lib/cli/iclit09b.so
DriverGBase ODBC DRIVER
DescriptionGBase ODBC DRIVER
Databasetestdb
LogonIDgbasedbt
pwdGBase123
Servernamegbase01
CursorBehavior0
CLIENT_LOCALEzh_CN.utf8
DB_LOCALEzh_CN.utf8
GL_USEGLU1
TRANSLATIONDLL/opt/gbase/lib/esql/igo4a304.so
; ISOLATIONLEVEL1 # 使用该参数简写ISOLVL设置默认的隔离级别0-5
;
; UNICODE connection Section
;
[ODBC]
;uncomment the below line for UNICODE connection
UNICODEUCS-2 # 如果需要使用unicode连接数据库这里需要去除注释值改为UCS-2
;
; Trace file Section
;
Trace0
TraceFile/tmp/odbctrace.out
InstallDir/opt/gbase
TRACEDLLidmrs09a.soODBC连接测试 确认当前用户环境变量中包括2中配置的环境变量3已经完成。通过isql测试ODBC配置正确。
[rootlocalhost ~]# env | egrep (GBASEDBT|ODBCINI)
GBASEDBTSERVERgbase01
ODBCINI/etc/odbc.ini
GBASEDBTDIR/opt/gbase
rootnetsky:~# isql -v testdb
---------------------------------------
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
---------------------------------------
SQL select dbservername from dual;
---------------------------------------
| |
---------------------------------------
| gbase01 |
---------------------------------------
SQLRowCount returns -1
1 rows fetchedrootnetsky:~# iusql -v testdb
---------------------------------------
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
---------------------------------------
SQL select dbservername from dual;
---------------------------------------
| |
---------------------------------------
| gbase01 |
---------------------------------------
SQLRowCount returns -1
1 rows fetched2QT在LinuxCentOS的安装与配置
2.1确认操作系统已经安装gcc和g
通过apt查找确认gcc、g、clang已经安装
[rootlocalhost ~]# 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源进行安装
[rootlocalhost ~]# yum -y install gcc libgcc gcc-c clang clang-devel2.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执行安装
[rootlocalhost ~]# ./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的账号如果没有账号需要注册如果想跳过该步需要断网 接受协议 指定安装目录 选择安装组件Qt 5.12.12中仅选择Desktop gcc 64-bit 安装过程 完成安装 在 帮助-关于插件中关闭ClangCodeModel该操作需要重启才生效
2.3确认或编译QODBC驱动
查看Qt安装目录下的/opt/Qt5.12.12/5.12.12/gcc_64/plugins/sqldrivers
[rootlocalhost sqldrivers]# pwd
/opt/Qt5.12.12/5.12.12/gcc_64/plugins/sqldrivers
[rootlocalhost sqldrivers]# ls -al *odbc.so
-rwxr-xr-x. 1 root root 119352 11月 17 2021 libqsqlodbc.so3QT创建项目通过ODBC连接到GBase 8s数据库
创建新项目 创建Console Application 名称为QtOdbcGBasedbt 使用qmake
使用Desktop Qt 5.12.12 GCC 64bit
在QtOdbcGBasedbt.pro中增加一行QT sql 在main.cpp中写入代码 main.cpp的详细代码
#include QCoreApplication
#include QtSql
#include QSqlDatabaseint 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;HOSTh01.gbasedbt.com;SERV9088;PROTonsoctcp;DLOCzh_CN.57372;CLOCzh_CN.57372;DBtestdb;SRVRgbase01);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\tts:value2;}db.close();return ok;
}执行debug编译
附件 QtOdbcGBasedbt.zip