7
OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();

如何GetSchemaTable()工作?

它在 RDBMS 中从哪里获取信息?

4

3 回答 3

6

的实施IDataReader.GetSchemaTable()取决于提供者 - 所以它会有所不同。您可以编写自己的提供程序并以任何您想要的方式进行操作。

老实说,这在框架中是一个糟糕的设计——你不应该有返回无类型的接口方法,DataTable或者DataSet因为结果可能包含任何东西。Kinda 首先打破了通过接口限制它的观点:“你必须有一个返回的方法,DataTable但我们不在乎它有哪些行或列”

即使提供程序是 SQLGetSchemaTable()也不会返回到[syscolumns]or [sysobjects]。这将是一个额外的数据库调用,需要额外的权限并且无论如何都不起作用,因为结果集不需要反映数据库中的任何对象。

我不确定,但我希望绝大多数IDataReader.GetSchemaTable()实现能够读取与结果集一起保存的元数据的一些属性。

于 2011-08-17T13:28:48.953 回答
2

GetSchemaTable() 读取 ADO.NET 返回的结果集上的元数据。

于 2010-07-15T14:01:06.757 回答
-1

来自每个数据库中的系统表(例如,syscolumns、sysobjects 等)。

于 2009-10-15T19:34:08.017 回答