OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();
GetSchemaTable()如何工作?

它在RDBMS中从何处获取其信息?

最佳答案

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

老实说,这在框架中是不好的设计-永远不要有返回无类型DataTableDataSet的接口(interface)方法,因为该结果可能包含任何内容。首先,Kinda克服了通过接口(interface)来限制它的观点:“您必须具有返回DataTable的方法,但我们不在乎它具有的行或列”

即使提供程序是SQL,GetSchemaTable()也不会返回到[syscolumns][sysobjects]。那将是一个额外的数据库调用,需要额外的特权,而且无论如何都无法正常工作,因为结果集不需要反射(reflect)数据库中的任何对象。

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

关于c# - GetSchemaTable()如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1574492/

10-13 08:24