Получить имена полей, возвращаемые из любого оператора SQL - PullRequest
3 голосов
/ 26 ноября 2009

Я хочу получить список имен полей, возвращаемых из оператора SQL. Это можно сделать с помощью оператора sql или некоторого кода синтаксического анализа c #, чтобы проанализировать оператор как строку. Можно ли сделать это легко без написания сложного парсера?

Например, я могу захотеть вернуть

имя, поле2, поле3

от

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

Ответы [ 3 ]

5 голосов
/ 26 ноября 2009

Если вы хотите использовать компоненты SqlClient, такие как SqlDataReader Class , вы можете использовать

Reader.GetName(columnNumber)

Метод возврата имени столбца.

3 голосов
/ 26 ноября 2009

Если у вас есть DataSet или DataTable, вы можете получить доступ к его свойству Columns, которое является коллекцией DataColumn объектов. Затем можно получить доступ к имени столбца следующим образом:

// assume dt is DataTable
string colname = dt.Columns[0].ColumnName;
0 голосов
/ 26 ноября 2009

Если вы используете 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

Надеюсь, это поможет

G

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...