【问题标题】:Get Columns of a Table by GetSchema() method通过 GetSchema() 方法获取表的列
【发布时间】:2024-01-03 04:16:02
【问题描述】:

我想在ADO.Net 中使用GetSchema 方法获取表的列列表,我的代码是:

var dtCols = con.GetSchema("Columns", new[] { "DBName", "TableName" });

我得到一个空的DataTable,有什么问题?

【问题讨论】:

  • 在黑暗中刺,但试试var dtCols = con.GetSchema("Columns", new[] { "DBName", null, "TableName" });
  • 感谢 Matthew 的成功,请将您的解决方案写成答案。

标签: c# ado.net schema


【解决方案1】:

这两个答案能否概括一下:

dtCols = con.GetSchema("Columns", new[] {con.DataSource, null, "TableName"});

这是假设“TableName”是您想要架构的表的名称。

【讨论】:

  • 听起来您是在要求澄清?答案仅用于回答问题,不用于评论或寻求帮助。
  • 如果您的连接已经连接到数据库,您也可以只为数据库名称指定一个空值而不是 con.DataSource。
【解决方案2】:

我遇到了类似的问题,以下工作..

using(SqlCommand command = new SqlCommand(sqlText, con)) {
    var sqlReader = command.ExecuteReader();
    var a = sqlReader.GetColumnSchema();                        
}

【讨论】:

    【解决方案3】:

    您必须为“所有者”限制指定一个参数。

    var dtCols = con.GetSchema("Columns", new[] { "DBName", null, "TableName" });
    

    【讨论】: