IBM.Data.DB2.Core DataReader.GetSchemaTable() 方法抛出 NotSupportedException C# .NET 标准

Posted

技术标签:

【中文标题】IBM.Data.DB2.Core DataReader.GetSchemaTable() 方法抛出 NotSupportedException C# .NET 标准【英文标题】:IBM.Data.DB2.Core DataReader.GetSchemaTable() method throws NotSupportedException C# .NET standard 【发布时间】:2018-06-14 21:06:12 【问题描述】:

代码采用 C# .NET 标准

var connectionString = $"<connection string here>";
var connection = new DB2Connection(connectionString);
connection.Open();
IDbCommand command = connection.CreateCommand();
string sqlStatement = "<a valid query goes here>";
command.CommandText = sqlStatement;
IDataReader dataReader = command.ExecuteReader();

var data = new DataTable();
data = dataReader.GetSchemaTable(); //This throws a NotSupportedException.
//data.Load(dataReader); //This should work, but the above line is what throws the exception, which is what this method is calling internally.

在未注释掉的最后一行引发 NotSupportedException,并显示消息“不支持指定的方法。”

我安装了 1.2.2.100 版的 IBM.Data.DB2.Core,以及 11.1 版许可证。 如果您需要更多上下文,请告诉我。

提前致谢。

【问题讨论】:

嗨,您可能应该尝试编译此示例以验证您的版本和安装:ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/… 该代码在使用 IBM.Data.DB2.Core NuGet 包时无法编译。它使用旧的 IBM.Data.DB2 包进行编译。但我需要它才能在 .NET Standard 环境中工作。 您的代码片段(带有合适的连接字符串和查询)适用于我的 Db2-LUW v11.1.3.3a 和 Visual-Studio-2017-community-edition(15.7.6)。如果您仍有问题,您可以更新您的问题以提供准确的环境/组件详细信息。 我也有同样的问题。版本是 netcoreapp2.1,在 Mac OS X 上使用 DB2 1.2.2.100。看起来这不是 IBM 实现的。 【参考方案1】:

您查询选择没有连接,只有一个表。

我建议您使用 IDB2 对象的代码:

var connectionString = $"<connection string here>";
string sqlStatement = "<a valid query goes here>";

var connection = new DB2Connection(connectionString);
DB2Command myCommand = new DB2Command(sqlStatement,connection);

connection.Open();

try 

  DB2DataReader reader = myCommand.ExecuteReader(CommandBehavior.KeyInfo);

  DataTable dt = reader.GetSchemaTable();

  reader.Close();

finally 

  connection .Close();

【讨论】:

以上是关于IBM.Data.DB2.Core DataReader.GetSchemaTable() 方法抛出 NotSupportedException C# .NET 标准的主要内容,如果未能解决你的问题,请参考以下文章

DataRead 和DataSet区别

ORM 和 DAL 有啥区别?

尝试从 WPF 中的 Access 数据库中获取给定条件的日期时出错