- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();
GetSchemaTable()
是如何工作的?
它从 RDBMS 的哪里获取信息?
最佳答案
IDataReader.GetSchemaTable()
的实现取决于提供者 - 因此它会有所不同。您可以编写自己的提供程序并以任何您想要的方式进行。
老实说,这是框架中的一个糟糕设计点——您永远不应该使用返回未类型化的 DataTable
或 DataSet
的接口(interface)方法,因为结果可能包含任何内容。 Kinda 首先否定了通过接口(interface)对其进行约束的观点:“您必须有一个返回 DataTable
的方法,但我们不关心它有哪些行或列”
即使提供程序是 SQL GetSchemaTable()
也不会返回到 [syscolumns]
或 [sysobjects]
。这将是一个额外的数据库调用,需要额外的权限并且无论如何都不起作用,因为结果集不需要反射(reflect)数据库中的任何对象。
我不确定,但我希望绝大多数 IDataReader.GetSchemaTable()
实现能够读取与结果集一起保存的元数据的某些属性。
关于c# - GetSchemaTable() 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1574492/
-你好,世界!-。我正在做一个带有ASP.NET的C#项目,我遇到了一个障碍。该项目是从表动态加载元数据和记录来编辑它们,而不是静态地定义哪些表可以编辑。因此,我需要获取不同表的模式/元数据。。以下是
OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo); DataTable dat
我是一个新手,我正在尝试从我的数据库中的某个表中检索列名称、大小(最大长度)和数据类型,当我执行以下代码时,它希望它显示所有列类型和名称(我没有找到如何引用 Size ,我使用了 ColumnSize
是否可以使用 GetSchemaTable() 仅检索列名? 我一直在尝试使用这种方法(仅)检索列名,是否可能。 DataTable table = myReader.GetSchemaTable
我正在尝试使用序数值从 MySqlDataReader 的每一行中提取数据,而不是使用字符串查找。为了做到这一点,我使用了阅读器提供的 GetSchemaTable 来获取要循环的数据表,以填充一个字
我正在编写一个类,它封装了使用 ADO.NET 从数据库中检索数据的复杂性。其核心方法是 private void Read(Action action) where T : class, new()
我是一名优秀的程序员,十分优秀!