如何优雅地使用delphi7通过ODBC连接openGauss

来自jj大佬的修正:以下内容默认使用ecs,如果使用虚拟机需要使用不同的驱动,虚拟机上的odbc使用

https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/x86/openGauss-1.1.0-ODBC.tar.gz

windows上安装的驱动选同一文件夹下的x86-64的驱动。

本文基于华为的实验3:openGauss场景化综合应用实验.docx,增加了Delphi连接部分。

使用ODBC连接数据库

修改数据库的pg_hba.conf文件。

在GS_HOME中查找pg_hba.conf文件,本实验中数据库GS_HOME设置的为/gaussdb/data/db1,实际操作中GS_HOME地址可以查看安装时的配置文件:<PARAM name="dataNode1" value="/gaussdb/data/db1"/>。

cd /gaussdb/data/db1

vi pg_hba.conf

输入“:90”找到对应位置,然后输入“i”切换到INSERT模式,将“host  all  all  192.168.0.132/32  trust”修改为“host  all  all  192.168.0.132/32  sha256”。

7d4d9beb85c74fc9bbea0f8f56cd7995.png

将以下内容添加进pg_hba.conf文件,完成后按下“Esc”键,退出INSERT模式,输入“:wq”后回车保存。

# IPv4 local connections:

host    all             all             127.0.0.1/32            trust

host    all    all    192.168.0.19/32    sha256

host all all 0.0.0.0/0 sha256

# IPv6 local connections:

host    all             all             ::1/128                 trust

使用omm用户登陆,使用gs_ctl将策略生效。

su - omm

gs_ctl reload -D /gaussdb/data/db1/

返回结果为:

[2020-07-23 15:39:55.398][71828][][gs_ctl]: gs_ctl reload ,datadir is -D "/gaussdb/data/db1"

server signaled

注:如果之前没有启动过数据库,返回结果如下,继续操作即可:

[2021-04-27 17:02:59.640][15354][][gs_ctl]: gs_ctl reload ,datadir is /gaussdb/data/db1

[2021-04-27 17:02:59.640][15354][][gs_ctl]:  PID file "/gaussdb/data/db1/postmaster.pid" does not exist

[2021-04-27 17:02:59.640][15354][][gs_ctl]: Is server running?

修改数据库监听地址。

在GS_HOME中,本实验中数据库GS_HOME设置的为/gaussdb/data/db1。

cd /gaussdb/data/db1

vi postgresql.conf

输入“:60”找到对应位置,然后输入“i”切换到INSERT模式,将listen_addresses的值修改成为*,修改后按下“Esc”键,退出INSERT模式,输入“:wq”后回车保存。。

#listen_addresses = '192.168.0.19'              # what IP address(es) to listen on;

listen_addresses = '*'

修改完成后重启数据库生效(-D后面的数据库默认路径,需要根据实际情况进行修改)。

gs_ctl restart -D /gaussdb/data/db1/

数据源安装配置

下载unixODBC源码包。

获取参考地址:Download unixODBC from SourceForge.net

b9e8227ebfdb4e50bcd51ac448f6aa34.png

下载后的文件名为:unixODBC-2.3.0.tar.gz

下载客户端openGauss ODBC驱动包。

arm版获取参考地址:https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/arm/openGauss-1.1.0-ODBC.tar.gz

华为课程提供的openeuler版本windows虚拟机使用的是x64版本:https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/x86/openGauss-1.1.0-ODBC.tar.gz

其他版本请自行在openGauss官网下载,经测试2.0.0版本的opengauss应安装1.1.0的驱动。

ff86fa3ab29141339a9bd7bdf26c9bf4.png

下载后的文件名为:openGauss-1.1.0-ODBC.tar.gz

上传unixODBC源码包、ODBC驱动包。

通过文件传输工具(如:WinSCP、XFTP等),将unixODBC源码包、ODBC驱动包二个包上传至数据库服务器/usr/local目录下。如果后续操作权限不够,提示permission denied,请在winscp或者通过命令行将loacl文件夹循环设定为755或7777.

bd0a532d530e45c096fdc26ddccc463a.png

安装unixODBC。

为了操作方便,可以通过SSH工具(如:putty、Xshell等)连接到数据库服务器,进行安装,具体操作如下:

先解压安装包。

cd /usr/local

tar -zxvf unixODBC-2.3.0.tar.gz

unixODBC-2.3.0/

unixODBC-2.3.0/ini/

unixODBC-2.3.0/ini/iniPropertyUpdate.c

unixODBC-2.3.0/ini/iniProperty.c

unixODBC-2.3.0/ini/iniOpen.c

……………………….

进行配置。

cd unixODBC-2.3.0

./configure --enable-gui=no  --build=aarch64-unknown-linux-gnu

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /usr/bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

……………………….

进行make编译。

make

make  all-recursive

make[1]: Entering directory '/usr/local/unixODBC-2.3.0'

Making all in extras

make[2]: Entering directory '/usr/local/unixODBC-2.3.0/extras'

make[2]: Nothing to be done for 'all'.

make[2]: Leaving directory '/usr/local/unixODBC-2.3.0/extras'

……………………….

进行make install编译安装。

make install

Making install in extras

make[1]: Entering directory '/usr/local/unixODBC-2.3.0/extras'

make[2]: Entering directory '/usr/local/unixODBC-2.3.0/extras'

make[2]: Nothing to be done for 'install-exec-am'.

make[2]: Nothing to be done for 'install-data-am'.

make[2]: Leaving directory '/usr/local/unixODBC-2.3.0/extras'

make[1]: Leaving directory '/usr/local/unixODBC-2.3.0/extras'

……………………….

将openGauss-1.0.0-ODBC.tar.gz解压到“/usr/local/lib”目录下。

cd /usr/local

tar -zxvf /usr/local/openGauss-1.1.0-ODBC.tar.gz  -C /usr/local/lib

./lib/

./lib/libodbcinst.so.2

./lib/libpq.so.5

./lib/libpgport_tool.so

./lib/libcom_err_gauss.so

./lib/libodbcinst.so

./lib/libcom_err_gauss.so.3.0

./lib/libkrb5_gauss.so

……………………

将openGauss-1.0.0-ODBC.tar.gz解压后lib目录中的库拷贝到“/usr/local/lib”目录下。

cd /usr/local/lib/odbc/lib

ll

total 1.6M

-rwxr-xr-x 1 root root 1.3K Oct 12 02:12 psqlodbca.la

-rwxr-xr-x 1 root root 766K Oct 12 02:12 psqlodbca.so

-rwxr-xr-x 1 root root 1.3K Oct 12 02:12 psqlodbcw.la

-rwxr-xr-x 1 root root 772K Oct 12 02:12 psqlodbcw.so

cp *.* /usr/local/lib

配置ODBC驱动文件。

在“/usr/local/etc/odbcinst.ini”文件中追加以下内容。

[GaussMPP]

Driver64=/usr/local/lib/psqlodbcw.so

setup=/usr/local/lib/psqlodbcw.so

具体如下:

vi /usr/local/etc/odbcinst.ini

[GaussMPP]

Driver64=/usr/local/lib/psqlodbcw.so

setup=/usr/local/lib/psqlodbcw.so

配置数据源文件。

在“/usr/local/etc/odbc.ini ”文件中追加以下内容。

[MPPODBC]             (数据源名称)

Driver=GaussMPP       (驱动名称)

Servername=(数据库Server IP)

Database=  (数据库名)

Username=  (数据库用户名)

Password=  (数据库用户密码)

Port=(数据库监听端口)

Sslmode=allow

具体如下:

vi /usr/local/etc/odbc.ini

用于疫情防控信息管理系统的设置如下(无需删除多余的空行)

[MPPODBC]

Driver=GaussMPP

Servername=192.168.56.101 请更改为实际的本机ip

Database=yqfk

Username=yjh

Password=Happy123

Port=26000

Sslmode=allow

在客户端配置环境变量。

本实验的客户端与数据库在同一台服务器。

在root的.bashrc文件中追加以下内容。

export LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/lib/lib:$LD_LIBRARY_PATH

export ODBCSYSINI=/usr/local/etc

export ODBCINI=/usr/local/etc/odbc.ini

具体如下:

cd ~
vi ~/.bashrc

# .bashrc

# User specific aliases and functions

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

# Source global definitions

if [ -f /etc/bashrc ]; then

        . /etc/bashrc

fi

export LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/lib/lib:$LD_LIBRARY_PATH

export ODBCSYSINI=/usr/local/etc

export ODBCINI=/usr/local/etc/odbc.ini

使用环境变量生效。

source ~/.bashrc

测试数据源配置

执行isql -v MPPODBC (数据源名称)命令。

isql -v MPPODBC

如果显示如下信息,表明配置正确,连接成功。

        
[omm@db1 ~]$ isql -v MPPODBC
+---------------------------------------+
| Connected!                            |
|                                               |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

SQL> 

以下内容仅供参考,对于配置和测试疫情防控信息管理系统项目以下部分应以说明文档的步骤为准。以下内容共其他开发者参考

配置Windows odbc

Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器便可直接进行配置。

操作步骤

下载客户端GaussDB(for openGauss)驱动程序并进行安装:

下载地址:https://dbs-download.obs.cn-north-1.myhuaweicloud.com/rds/GaussDB_opengauss_client_tools.zip

在本地(例如D:/download)下载ZIP文件后进行解压缩,解压缩后文件如下。

9092e97161954f31a5cf8cc247df39dd.png

由于本实验openGauss安装在ECS(openEuler ARM)上,所以进入Euler2.8_arm_64文件夹,显示如下:

之前我做作业的时候用的是ecs,所以是写的arm,如果使用虚拟机验证方案则使用Euler2.5 x86-64文件夹下的安装包(提交的作业文档根目录已经放有适合x86虚拟机的驱动安装包)。

18ef5a2ed3264790a950638fb8ff3fcf.png

解压缩GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz文件,显示如下:

e1c5f903daee4e6bbcfe804734a1f6ae.png

点击psqlodbc.msi进行安装:(delphi7默认为32位程序,安装32位的即可)
以下均进行32位安装,图片是华为文档提供的没有逐个进行更改,也可以选择32位和64位均配置好也可以

790dc529ba364987b2670747b132d38b.png

默认设置,直到安装完毕。

打开驱动管理器。

在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为C盘,如果是其他盘符,请对路径做相应修改):

64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理器:C:\Windows\System32\odbcad32.exe 或者直接使用控制面板 > 管理工具 > ODBC 数据源(64 )

应在32位管理器上进行安装

90f4ce0013a84dc7bb17e932640d441d.png

配置数据源。

在打开的驱动管理器上,选择“用户DSN > 添加 > PostgreSQL Unicode(x64)”,然后进行配置:

113d47e585c84dd7bd52544c6c7bb033.pngfe3ef19d6b2d471db736e81cdbfd669b.png

f658eb3957ef42418eea052cd461c683.png

Data Source:openGauss (数据源名称,可以自定义)。

Database:postgres (需要连接的Datebase名称)。

Server:openGauss数据库服务器的公网IP,请根据实际情况填写。

Pot:26000 (端口号)。

User Name:dbuser (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)

Password:dbuser用户的密码,请根据实际情况填写。

验证并保存设置。

点击Test,显示 Connection successful 表示设置成功:

5ff4dec969d24989a5ee63b5dc78fbd7.png

点击保存:

b903bc6dfe244696aa9c72f1b23116ee.png

6a13c732a69c43319783ddc992dadc63.png

配置成功!

  1. DELPHI7通过ODBC连接数据库

操作步骤

      进行到这一步之前需要先安装delphi7,delphi10的操作也大同小异,也可以。使用ADO组件里的TADOConnect,使用FireDAC或者UniDAC的方法请自行探索,实测openGauss2.0不能通过UniDAC正确连接。

edaf5862b8dc4f6ca19e2be7861ee209.png

图片中的第一个就是,双击添加ADOConnect到你的窗口任意地方即可(程序编译运行时不会显示),如图。

42c94ce22c1a4164b148bcc87abc893b.png

双击ADOC进入配置页面,选择使用连接字符串:

5730961aee884c5eae9529c31312b3b7.png
      点击生成,如图选择 ODBC

e4f81145cbe84833a4c73c50fd5152ea.png

点击下一页,选择自己刚刚添加在ODBC管理器里的数据源名称,如果没找到就是32位/64位选择错了,直接安装另一种驱动重新配置即可,不需要卸载原有驱动。

73a76e824ae24891a3ebc91be67a6a56.png

按照图片选择即可,之后点测试链接,如果连接完成直接点确定退出即可。

按照以上配置之后会发现程序每次运行都会弹出很烦人的登陆数据库的窗口,如图设置ADOC即可去掉每次弹窗:

(其实就是把LoginPrompt设置为False就可以了)

8f6e8d7026074af79b54666271ddff16.png

连接成功,本教程结束。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值