获取从任何sql语句返回的字段名称

时间:2009-11-26 16:56:57

标签: c# asp.net sql

我想获得一个从sql语句返回的字段名列表。这可以使用sql语句或一些c#解析代码来完成,以将语句解析为字符串。如果不编写复杂的解析器,这可以轻松完成吗?

例如,我可能想要返回

name,field2,field3

SELECT a.field1 as name, a.field2, b.field3 FROM A INNER JOIN B ON A.Id = B.FkId

3 个答案:

答案 0 :(得分:5)

如果您询问使用SqlClient组件,例如SqlDataReader Class,可以使用

Reader.GetName(columnNumber)

返回列名的方法。

答案 1 :(得分:3)

如果您有DataSetDataTable,则可以访问其Columns属性,该属性是DataColumn个对象的集合。然后可以像这样访问列名:

// assume dt is DataTable
string colname = dt.Columns[0].ColumnName;

答案 2 :(得分:0)

如果您使用的是大多数人使用的SqlDataReader,您可以使用以下代码检索字段名称

Private Shared Function GetDataRecordColumns(ByVal dr As SqlClient.SqlDataReader) As List(Of String)

    '' list to contain the columns
    Dim ls As New List(Of String)

    For x As Integer = 0 To dr.FieldCount - 1
        ls.Add(dr.GetName(x))
    Next

    Return ls

End Function

如果您正在使用数据集或数据表,可以使用以下函数(只需传入数据集。如果使用数据集,则传递表(0))

Private Shared Function GetDataRecordcolumns(ByVal dt As DataTable) As List(Of String)

        Dim ls As New List(Of String)

        For Each col As DataColumn In dt.Columns
            ls.Add(col.ColumnName)
        Next

        Return ls

 End Function

希望这有帮助