C# 获取从任何sql语句返回的字段名
我想获取从sql语句返回的字段名列表。这可以通过使用sql语句或一些c#解析代码将语句解析为字符串来完成。不需要编写复杂的解析器就可以轻松完成这项工作吗 例如,我可能想返回 名称,字段2,字段3 从C# 获取从任何sql语句返回的字段名,c#,asp.net,sql,C#,Asp.net,Sql,我想获取从sql语句返回的字段名列表。这可以通过使用sql语句或一些c#解析代码将语句解析为字符串来完成。不需要编写复杂的解析器就可以轻松完成这项工作吗 例如,我可能想返回 名称,字段2,字段3 从 如果您询问如何使用SqlClient组件,例如,可以使用 Reader.GetName(columnNumber) 方法返回列名。如果您有数据集或数据表,则可以访问其列属性,该属性是数据列对象的集合。然后可以按如下方式访问列名: // assume dt is DataTable string c
如果您询问如何使用SqlClient组件,例如,可以使用
Reader.GetName(columnNumber)
方法返回列名。如果您有
数据集
或数据表
,则可以访问其列
属性,该属性是数据列
对象的集合。然后可以按如下方式访问列名:
// assume dt is DataTable
string colname = dt.Columns[0].ColumnName;
如果您使用的是大多数人都使用的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
如果您使用的是dataset或datatable,则可以使用以下函数(如果您使用的是dataset,只需传入dataset.Table(0))
希望这有帮助
这听起来像是我想要的那种东西。唯一的缺点是它需要一个db命中,我想这是需要的。我可以改变statemt,只返回一个方法,然后使用读取器获取name@Sheff“需要db命中”:是的。编写SQL解析器的另一种选择需要考虑聚合表达式、子查询、…因此不容易。这是vb-OP指定的C#
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
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