赞
踩
操作系统:CentOS 7.8 64-bit
软件需求:
GBase 8s CSDK 3.0.0_1
unixODBC 2.3.7
dotnet-sdk-3.1
CentOS 7.8默认的unixODBC版本为2.3.1,需要升级为2.3.7
加载适用于Microsoft的Linux存储库
[root@localhost ~]# rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
清理yum缓存
[root@localhost ~]# yum clean all
升级/安装unixODBC
[root@localhost ~]# yum -y install unixODBC unixODBC-devel
确认unixODBC已经安装及版本
root@localhost ~]# rpm -qa | grep unixODBC
unixODBC-devel-2.3.7-1.rh.x86_64
unixODBC-2.3.7-1.rh.x86_64
CSDK可以使用手动安装的方式,或者使用绿色版本,但均需要配置环境变量。
从gbasedbt.com下载绿色版CSDK
[root@localhost ~]# wget https://gbasedbt.com/dl/odbc/GBase8s_3.0.0_1-Linux64-ODBC-Driver.tar.gz --no-check-certificate
解压到特定目录下,如/opt,生成的目录为/opt/gbase8s-odbc-driver
[root@localhost ~]# tar -zxf GBase8s_3.0.0_1-Linux64-ODBC-Driver.tar.gz -C /opt/
设置环境变量/etc/profile
export GBASEDBTDIR=/opt/gbase8s-odbc-driver
export GBASEDBTSERVER=gbase01
export PATH=$GBASEDBTDIR/bin:$PATH
export GBASEDBTSQLHOSTS=$GBASEDBTDIR/etc/sqlhosts
export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/esql:$GBASEDBTDIR/lib/cli:$LD_LIBRARY_PATH
export ODBCINI=/opt/gbase8s-odbc-driver/odbc.ini
设置GBASEDBTSQLHOSTS配置文件
# GBASEDBTSQLHOSTS
gbase01 onsoctcp a01.gbasedbt.com 9088
重新登陆,通过esql -V命令确认CSDK已经安装,如下:
[root@localhost ~]# esql -V
GBase CSDK Version 4.10, GBASE-ESQL Version 4.10.FC4G1_3.0.0
Software Serial Number AAA#B000000
编辑/etc/odbcinst.ini配置文件,增加GBase 8s ODBC驱动注册信息
; /etc/odbcinst.ini
; ODBC Driver for GBase 8s
[GBase ODBC DRIVER]
Driver=/opt/gbase8s-odbc-driver/lib/cli/iclit09b.so
Setup=/opt/gbase8s-odbc-driver/lib/cli/iclit09b.so
APILevel=1
ConnectFunctions=YYY
DriverODBCVer=03.51
FileUsage=0
SQLLevel=1
smProcessPerConnect=Y
创建修改$ODBCINI楝文件,增加GBase 8s数据库连接信息,特别注意需要的环境变量都加上。
;--------------------------------------------------------------------------- ; GBase ODBC Sample File ; ; File: odbc.ini ; ;--------------------------------------------------------------------------- [ODBC Data Sources] testdb=GBase ODBC DRIVER ; ; Define ODBC Database Driver's Below - Driver Configuration Section ; [testdb] Driver=/opt/gbase8s-odbc-driver/lib/cli/iclis09b.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 TRANSLATIONDLL=/opt/gbase8s-odbc-driver/lib/esql/igo4a304.so ; ; UNICODE connection Section ; [ODBC] ;uncomment the below line for UNICODE connection UNICODE=UCS-2 ; ; Trace file Section ; Trace=0 TraceFile=/tmp/odbctrace.out InstallDir=/opt/gbase8s-odbc-driver TRACEDLL=idmrs09a.so
通过isql和iusql(isql的unicode连接方式)命令检查ODBC配置
[root@localhost etc]# isql -v testdb +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> ^C [root@localhost etc]# iusql -v testdb +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
使用yum安装Microsoft的Linux存储库中的dotnet-sdk-3.1
[root@localhost ~]# yum -y install dotnet-sdk-3.1
确认版本
[root@localhost ~]# dotnet --version
3.1.418
使用普通用户创建目录,创建工程
[liaosnet@localhost ~]$ mkdir -p Project/TestCsODBC
[liaosnet@localhost ~]$ cd Project/TestCsODBC/
创建工程
[liaosnet@localhost TestCsODBC]$ dotnet new console
查看创建的Hello World 工程
[liaosnet@localhost TestCsODBC]$ ls -al
总用量 8
drwxrwxr-x. 3 liaosnet liaosnet 60 5月 9 15:19 .
drwxrwxr-x. 3 liaosnet liaosnet 24 5月 9 15:19 ..
drwxrwxr-x. 2 liaosnet liaosnet 183 5月 9 15:19 obj
-rw-rw-r--. 1 liaosnet liaosnet 192 5月 9 15:19 Program.cs
-rw-rw-r--. 1 liaosnet liaosnet 178 5月 9 15:19 TestCsODBC.csproj
工程中增加需要用到的System.Data.Odbc包,版本为6.0.0
[liaosnet@localhost TestCsODBC]$ dotnet add package System.Data.Odbc -v 6.0.0
增加包完成后,在TestCsODBC.csproj配置文件中增加PackageReference
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Data.Odbc" Version="6.0.0" />
</ItemGroup>
</Project>
编辑Program.cs程序文件,内容如下:
using System; using System.Data; using System.Data.Odbc; namespace TestCsODBC { class Program { static void Main(string[] args) { Console.WriteLine("\n 测试Linux下dotnet通过ODBC方式连接到数据库\n"); // odbcinst.ini里的Driver名称,DSN名称 String connStr = "Driver={GBase ODBC DRIVER};DSN=testdb"; /* // 如果不使用DSN方式,以下参数均需要加上,以下参数为缩写格式。 String connStr = "Driver=/opt/gbase8s-odbc-driver/lib/cli/iclit09b.so;" + "Host=a01.gbasedbt.com;SERV=9088;PROT=onsoctcp;SRVR=gbase01;" + "DB=testdb;DLOC=zh_CN.utf8;CLOC=zh_CN.utf8;" + "UID=gbasedbt;PWD=GBase123;" + "TDLL=/opt/gbase8s-odbc-driver/lib/esql/igo4a304.so"; */ OdbcConnection odbcconn = new OdbcConnection(connStr); try { odbcconn.Open(); } catch (Exception ex) { Console.WriteLine(ex.Message); } using (OdbcCommand odbccmd = odbcconn.CreateCommand()) { // drop table odbccmd.CommandText = "drop table if exists company"; odbccmd.ExecuteNonQuery(); // create table odbccmd.CommandText = "create table company(coid serial,coname varchar(255),coaddr varchar(255))"; odbccmd.ExecuteNonQuery(); // insert rows odbccmd.CommandText = "insert into company values (0,'南大通用','天津市海泰绿色产业基地')"; odbccmd.ExecuteNonQuery(); odbccmd.CommandText = "insert into company values (0,'南大通用北京分公司','北京市朝阳区太阳宫')"; odbccmd.ExecuteNonQuery(); // update row odbccmd.CommandText = "update company set coaddr = '天津市普天创新园' where coid = 1"; odbccmd.ExecuteNonQuery(); // select rows odbccmd.CommandText = "select * from company"; OdbcDataReader dr = odbccmd.ExecuteReader(); while (dr.Read()) { Console.WriteLine(" " + dr[0] + "\t" + dr[1] + "\t" + dr[2]); } } Console.WriteLine("\n 测试Linux下dotnet通过ODBC方式连接到数据库 结束\n"); } } }
编译
[liaosnet@localhost TestCsODBC]$ dotnet build
运行测试程序
[liaosnet@localhost TestCsODBC]$ dotnet run
测试Linux下dotnet通过ODBC方式连接到数据库
1 南大通用 天津市普天创新园
2 南大通用北京分公司 北京市朝阳区太阳宫
测试Linux下dotnet通过ODBC方式连接到数据库 结束
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。