use*_*312 6 c# oledbdatareader getschematable
OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();
Run Code Online (Sandbox Code Playgroud)
GetSchemaTable()工作怎么样?
它在RDBMS中从何处获取信息?
实施IDataReader.GetSchemaTable()取决于提供者 - 因此会有所不同.您可以编写自己的提供程序,并以您想要的任何方式执行.
说实话,这在框架中是糟糕的设计 - 你永远不应该有返回无类型的接口方法,DataTable或者DataSet因为结果可能包含任何东西.Kinda首先忽略了通过接口约束它的点:"你必须有一个返回的方法,DataTable但我们不关心它有哪些行或列"
即使提供者是SQL GetSchemaTable()也不会回到[syscolumns]或[sysobjects].这将是一个额外的数据库调用,需要额外的权限,无论如何都不起作用,因为结果集不需要反映数据库中的任何对象.
我不确定,但我希望绝大多数IDataReader.GetSchemaTable()实现都能读取结果集中保存的元数据的某些属性.