操作系统: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_641.2 GBase 8s CSDK/ODBC驱动安装及确认
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#B0000002,ODBC配置 2.1 ODBC配置文件
编辑/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.so2.2 验证ODBC配置
通过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>3,安装dotnet 3.1 安装dotnet core sdk 3.1(安装自己需要的版本)
使用yum安装Microsoft的Linux存储库中的dotnet-sdk-3.1
[root@localhost ~]# yum -y install dotnet-sdk-3.1
确认版本
[root@localhost ~]# dotnet --version 3.1.4184,创建工程,编写程序测试,执行测试。
使用普通用户创建目录,创建工程
[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
Exe netcoreapp3.1
编辑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";
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方式连接到数据库 结束



