怎样的GetSchemaTable()工作?
-
21-09-2019 - |
题
OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();
如何GetSchemaTable()
工作?
它从哪里获得它的RDBMS信息?
解决方案
IDataReader.GetSchemaTable()
的实施要由提供商 - 因此它会有所不同。你可以写你自己的供应商和做任何你想要的方式。
要诚实,这是在架构设计的不好一点 - 你永远不应该有接口方法返回一个类型化DataTable
或DataSet
作为结果可能包含任何数据。还挺击败在首位的接口制约它的点:“你必须有一个方法,返回DataTable
但我们不关心什么的行或列有” 的
即使提供商是SQL GetSchemaTable()
不回去[syscolumns]
或[sysobjects]
。这将是一个额外的DB调用,需要额外的特权,而不是工作,无论如何,作为结果集并不需要反映在数据库中的任何对象。
我不能肯定,但是我希望广大IDataReader.GetSchemaTable()
实现的读取与结果集举行的元数据的某些属性。
其他提示
的GetSchemaTable()读取由ADO.NET返回结果集的元数据。
在每个数据库中
从系统表(例如,syscolumns中,系统对象,等)。
不隶属于 StackOverflow