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

如何GetSchemaTable()工作?

它从哪里获得它的RDBMS信息?

有帮助吗?

解决方案

IDataReader.GetSchemaTable()的实施要由提供商 - 因此它会有所不同。你可以写你自己的供应商和做任何你想要的方式。

要诚实,这是在架构设计的不好一点 - 你永远不应该有接口方法返回一个类型化DataTableDataSet作为结果可能包含任何数据。还挺击败在首位的接口制约它的点:“你必须有一个方法,返回DataTable但我们不关心什么的行或列有”

即使提供商是SQL GetSchemaTable()不回去[syscolumns][sysobjects]。这将是一个额外的DB调用,需要额外的特权,而不是工作,无论如何,作为结果集并不需要反映在数据库中的任何对象。

我不能肯定,但是我希望广大IDataReader.GetSchemaTable()实现的读取与结果集举行的元数据的某些属性。

其他提示

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

在每个数据库中

从系统表(例如,syscolumns中,系统对象,等)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top