如何使用 ODBC 连接 .NET Core 中的 Sybase 17 ASA?

How can I connect with Sybase 17 ASA in .NET Core, using ODBC?

我们有一个 Sybase 17 ASA 服务器并希望使用 ODBC 驱动程序进行连接。 我们的目标是使用完整的 .NET Core 2.1 及更高版本,而不是 .NET Standard 或 .NET Framework 4.x.

1。先决条件

假设您已经在机器上安装了 SQL Anywhere 17,包括所需的驱动程序。

2。应用设置

  • 创建一个新的.NET Core 应用程序,本示例将使用控制台。我用过 2.2 版。
  • 添加 NuGet 包System.Data.Odbc

3。 C#代码

  • 添加以下命名空间:

    使用 System.Data;
    使用 System.Data.Odbc;

  • 设置连接字符串:

    DRIVER={SQL Anywhere 17};server=srv_name;Database=db_name; uid=user;pwd=pass;LINKs=tcpip(host=aaa.bbb.ccc.ddd)

  • 检索一些数据以确认其有效:

    connection.Open();  
    var cmd = new OdbcCommand("select top 5 * from *table*", connection);  
    using (var reader = cmd.ExecuteReader())  
    {  
      while (reader.Read())    
      {    
        for (var i = 0; i < reader.FieldCount; i++)  
        {      
          Console.WriteLine(reader[i]);  
        }  
      }  
    }

为 IQ 创建链接服务器并执行简单的操作: 从 dbo.table_name;

插入 remoteserver.database.dbo.table_name select *

这就是 ASE 和 IQ 之间经常传输数据的方式。

现在有一个 .NET Core 3.1 库iAnywhere.Data.SQLAnywhere.NETCore

https://www.nuget.org/packages/iAnywhere.Data.SQLAnywhere.NETCore/

到目前为止,这已经提供了我查询数据和使用本机库而不是 ODBC 或旧的 4.6 库所需的结果。

编辑补充,我相信它仍然只有 Windows,所以不会遗憾地打开 Unix 托管 - 但对使用旧的 .NET 库来说是一个巨大的改进。