SYBASE ODBC .Net 内核
SYBASE ODBC .Net CORE
1.有没有人成功地使用 ODBC 从 c# 到 Sybase ASE?
2。或者更好,有没有人成功地将 Sybase ASE 与 .NET Core 一起使用?
我正在使用 .NET Core 1.1,而当前的 Sybase.AdoNet4.AseClient.dll 不起作用,所以我正在尝试使用 ODBC。我尝试使用两个 ODBC 包:
- Mono.Data.OdbcCore (NuGet)
- MSA.Net.Core.ODBC (NuGet)
两者都可以很好地处理内联查询,并且都可以很好地调用不带参数的 Sybase 存储过程,但是在尝试将参数发送到 sp 时,两者都有 相同的确切 错误,需要参数的地方。
这是一个片段:
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "XX_GetLookUp";
command.Parameters.Add("@Type", OdbcType.VarChar).Value = "ACC";
using (var reader = command.ExecuteReader()) {
...
}
我在 command.ExecuteReader() 期间不断收到以下错误:
System.Data.Odbc.OdbcException: '错误 [ZZZZZ] [SAP][ASE ODBC 驱动程序][Adaptive Server Enterprise]过程 iKYC_GetLookUp 需要未提供的参数 @Type。
我尝试使用带和不带@的Type,但每次都产生相同的错误。
我也尝试了其他几种口味:
- command.CommandText = "{call dbo.iKYC_GetLookUp(?)}";
- command.CommandText = "{call dbo.iKYC_GetLookUp}";
- command.CommandText = "{dbo.iKYC_GetLookUp(?)}";
- command.CommandText = "dbo.iKYC_GetLookUp(?)";
- command.CommandText = "dbo.iKYC_GetLookUp ?";
以上每个生成:System.Runtime.InteropServices.SEHException:'External component has thrown an exception.'
我也尝试单独构建参数对象,但没有成功(同样的错误,缺少 @Type):
OdbcParameter p = new OdbcParameter();
p.ParameterName = "@Type";
p.DbType = DbType.AnsiString;
p.Direction = ParameterDirection.InputOutput;
p.Value = "ACC";
cmd.Parameters.Add(p);
如前所述,如果我将参数设置为 null,在存储过程中,代码可以正常工作并且数据按预期返回,所以问题似乎与传递的参数有关.
有没有人成功地使用 ODBC 从 c# 到 Sybase ASE?
有人成功地将 Sybase ASE 与 .NET Core 结合使用了吗?
附加信息:
我正在使用 Visual Studio 2017 (v 15.2)。核心 1.1 并使用 Sybase ASE 16.0 sp2。
我们遇到了类似的问题 - 我们想在 AWS 无服务器堆栈上使用 ADO.NET - 这只是 .NET Core。我们提出了 SAP 请求支持 .NET Core 的问题,但没有得到任何回复。
我们尝试使用 ODBC,但无法在我们的存储过程中使用 return 值,于是硬着头皮为 ASE 15 编写了我们自己的 ADO.NET Core DbProvider- 16.
它在 .NET Core 中本地实现了 TDS 5 协议,并且在我们所有的测试用例中优于 SAP/Sybase 实现。
https://github.com/DataAction/AdoNetCore.AseClient
wiki 上有 运行 单元、集成和基准测试的文档。
大部分功能已实现,欢迎请求和反馈。支持 .NET 4.6 和 .NET Core 1.0、1.1、2.0 和 2.1。
我们使用 AWS Lambda 和 .NET Core 2.0 进行了这项工作。
1.有没有人成功地使用 ODBC 从 c# 到 Sybase ASE?
2。或者更好,有没有人成功地将 Sybase ASE 与 .NET Core 一起使用?
我正在使用 .NET Core 1.1,而当前的 Sybase.AdoNet4.AseClient.dll 不起作用,所以我正在尝试使用 ODBC。我尝试使用两个 ODBC 包:
- Mono.Data.OdbcCore (NuGet)
- MSA.Net.Core.ODBC (NuGet)
两者都可以很好地处理内联查询,并且都可以很好地调用不带参数的 Sybase 存储过程,但是在尝试将参数发送到 sp 时,两者都有 相同的确切 错误,需要参数的地方。
这是一个片段:
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "XX_GetLookUp";
command.Parameters.Add("@Type", OdbcType.VarChar).Value = "ACC";
using (var reader = command.ExecuteReader()) {
...
}
我在 command.ExecuteReader() 期间不断收到以下错误: System.Data.Odbc.OdbcException: '错误 [ZZZZZ] [SAP][ASE ODBC 驱动程序][Adaptive Server Enterprise]过程 iKYC_GetLookUp 需要未提供的参数 @Type。
我尝试使用带和不带@的Type,但每次都产生相同的错误。
我也尝试了其他几种口味:
- command.CommandText = "{call dbo.iKYC_GetLookUp(?)}";
- command.CommandText = "{call dbo.iKYC_GetLookUp}";
- command.CommandText = "{dbo.iKYC_GetLookUp(?)}";
- command.CommandText = "dbo.iKYC_GetLookUp(?)";
- command.CommandText = "dbo.iKYC_GetLookUp ?";
以上每个生成:System.Runtime.InteropServices.SEHException:'External component has thrown an exception.'
我也尝试单独构建参数对象,但没有成功(同样的错误,缺少 @Type):
OdbcParameter p = new OdbcParameter();
p.ParameterName = "@Type";
p.DbType = DbType.AnsiString;
p.Direction = ParameterDirection.InputOutput;
p.Value = "ACC";
cmd.Parameters.Add(p);
如前所述,如果我将参数设置为 null,在存储过程中,代码可以正常工作并且数据按预期返回,所以问题似乎与传递的参数有关.
有没有人成功地使用 ODBC 从 c# 到 Sybase ASE? 有人成功地将 Sybase ASE 与 .NET Core 结合使用了吗?
附加信息: 我正在使用 Visual Studio 2017 (v 15.2)。核心 1.1 并使用 Sybase ASE 16.0 sp2。
我们遇到了类似的问题 - 我们想在 AWS 无服务器堆栈上使用 ADO.NET - 这只是 .NET Core。我们提出了 SAP 请求支持 .NET Core 的问题,但没有得到任何回复。
我们尝试使用 ODBC,但无法在我们的存储过程中使用 return 值,于是硬着头皮为 ASE 15 编写了我们自己的 ADO.NET Core DbProvider- 16.
它在 .NET Core 中本地实现了 TDS 5 协议,并且在我们所有的测试用例中优于 SAP/Sybase 实现。
https://github.com/DataAction/AdoNetCore.AseClient
wiki 上有 运行 单元、集成和基准测试的文档。
大部分功能已实现,欢迎请求和反馈。支持 .NET 4.6 和 .NET Core 1.0、1.1、2.0 和 2.1。
我们使用 AWS Lambda 和 .NET Core 2.0 进行了这项工作。