【问题标题】:How can I connect with Sybase 17 ASA in .NET Core, using ODBC?如何使用 ODBC 在 .NET Core 中连接 Sybase 17 ASA?
【发布时间】:2020-01-27 13:16:23
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net-core odbc sybase sybase-asa


    【解决方案1】:

    1.先决条件

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

    2。应用设置

    • 新建一个 .NET Core 应用程序,本例将使用 Console。我用的是 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]);  
            }  
          }  
        }
    

    【讨论】:

    • 我需要连接到 .Net 应用程序中的 Sybase 服务器 (IQ)。我的本地 PC 上没有安装 SQL Anywhere。有哪些选择?
    • @ca9163d9 我不知道。我的建议是创建一个单独的问题,希望有人可以回答。 :)
    【解决方案2】:

    为 IQ 创建一个链接服务器并执行以下简单操作: 插入remoteserver.database.dbo.table_name select * from dbo.table_name;

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

    【讨论】:

      【解决方案3】:

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

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

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

      编辑添加,我相信它仍然只适用于 Windows,因此不会遗憾地打开 Unix 托管 - 但对于使用旧的 .NET 库来说是一个巨大的改进。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-01
        • 2018-06-07
        • 2017-02-18
        • 1970-01-01
        • 2018-01-02
        • 1970-01-01
        • 2017-09-26
        相关资源
        最近更新 更多