【发布时间】: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
我们有一个 Sybase 17 ASA 服务器并希望使用 ODBC 驱动程序进行连接。 我们的目标是使用完整的 .NET Core 2.1 及更高版本,而不是 .NET Standard 或 .NET Framework 4.x。
【问题讨论】:
标签: c# asp.net-core odbc sybase sybase-asa
1.先决条件
假设您已经在机器上安装了 SQL Anywhere 17,包括所需的驱动程序。
2。应用设置
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 创建一个链接服务器并执行以下简单操作: 插入remoteserver.database.dbo.table_name select * from dbo.table_name;
这就是通常在 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 库来说是一个巨大的改进。
【讨论】: