提示 \color{red}{提示} 提示:
《Linux系统上编译安装FreeTDS库文件》中讲述了如何编译FreeTDS源码,并安装。
本文部分内容会在上述文章的基础上深入。
C# .NET8框架的程序运行在Linux系统上,使用技术手段,使得C#程序不仅可以访问Linux系统上的SQLServer数据库,也能访问Windows系统上的SQLServer数据库,以应对复杂的应用场景需求。
注:可能还有很多种方式可以实现需求,这里讲述 ODBC+FreeTDS 的方式。
根据文章《FreeTDS从Linux访问Windows SqlServer数据库》中说明验证就可以,这里不在累赘。
yum install unixODBC
yum install unixODBC-devel
这里重新编译FreeTDS,是为了使FreeTDS支持ODBC管理,即要生成 libtdsodbc.so 驱动库,方便配置。
根据官网《How to build: Configure and make》章节介绍,在使用 configure 命令时,要加上 –with-unixodbc,才能生成 libtdsodbc.so 驱动库,使FreeTDS支持ODBC管理。
./configure --prefix=/usr/local --with-tdsver=7.4 --with-unixodbc=/usr --enable-msdblib
–with-unixodbc 参数的路径一定要写对,不然编译不过,会提示找不到sql.h文件。
配置好后就按文章《Linux系统上编译安装FreeTDS库文件》中的介绍编译安装好即可。
还是采用文章《FreeTDS从Linux访问Windows SqlServer数据库》中的配置不用变
# The server you added yourself [myWin130] host = 192.168.1.130 port = 1433 tds version = 7.0
这个配置文件中,存储了ODBC驱动程序的信息,可以指定驱动程序。
在配置文件中添加如下代码:
[FreeTDS] Description=FreeTDS Driver for Linux Driver=/usr/local/lib/libtdsodbc.so Setup=/usr/local/lib/libtdsodbc.so UsageCount=1
这里,添加了一个别名为 FreeTDS 的驱动(名字可以随便起,符合实际意义就好),这个驱动的信息为:
此文件用来配置ODBC的数据源名称,在配置文件中添加如下代码:
[win130] Driver = FreeTDS Servername = myWin130 Database = fy2000
解释:
[root@localhost ~]# isql -v win130 sa 123456 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | echo [string] | | quit | | | +---------------------------------------+ select * from tb_student_info where class>2 +----------------+------------+------------+------------+ | name | class | age | hight | +----------------+------------+------------+------------+ | 小红 | 6 | 35 | 130 | | 小兵 | 3 | 25 | 234 | +----------------+------------+------------+------------+ SQLRowCount returns 2 2 rows fetched SQL> quit [root@localhost ~]#
到这里配置的ODBC就起作用了。
新建 test .NET8 项目,在项目中安装 System.Data.Odbc 软件包,
Program.cs 文件内容如下:
using System.Data.Odbc; string connectionString = "DSN=win130;UID=sa;PWD=123456;"; using (OdbcConnection connection = new OdbcConnection(connectionString)) { try { connection.Open(); Console.WriteLine("Connection opened successfully."); // 执行 SQL 查询 string sql = "SELECT * FROM tb_student_info"; OdbcCommand command = new OdbcCommand(sql, connection); using (OdbcDataReader reader = command.ExecuteReader()) { while (reader.Read()) { // 处理查询结果 Console.WriteLine(String.Format("{0}, {1}, {2}, {3}", reader[0], reader[1], reader[2], reader[3])); } } } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } }
发布到Linux服务器并运行
[root@localhost test]# dotnet test.dll Connection opened successfully. 小美, 2, 18, 123 小红, 6, 35, 130 小兵, 3, 25, 234 [root@localhost test]#
可以看到程序运行成功。
上一篇:联想a798t刷小米系统教程
下一篇:华硕显卡序列号字母代表什么