Подтвердить что ты не робот

В vb.net, как получить имена столбцов из datatable

Итак, я создаю datatable из таблицы, которую я не могу напрямую просмотреть (т.е. используя управление сервером sql). Я хочу найти имена столбцов, которые находятся в datatable, что было бы правильным способом сделать это?

4b9b3361

Ответ 1

Вот как получить имя столбца из DataColumn:

MyDataTable.Columns(1).ColumnName 

Чтобы получить имя всех DataColumns в вашем DataTable:

Dim name(DT.Columns.Count) As String
Dim i As Integer = 0
For Each column As DataColumn In DT.Columns
  name(i) = column.ColumnName
  i += 1
Next

Ссылки

Ответ 2

Вы можете прокручивать коллекцию столбцов данных.

В. Б.

Dim dt As New DataTable()
For Each column As DataColumn In dt.Columns
    Console.WriteLine(column.ColumnName)
Next

С#

DataTable dt = new DataTable();
foreach (DataColumn column in dt.Columns)
{
Console.WriteLine(column.ColumnName);
}

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

Ответ 3

Посмотрите

For Each c as DataColumn in dt.Columns
  '... = c.ColumnName
Next

или

dt.GetDataTableSchema(...)

Ответ 4

У вас есть доступ к вашей базе данных, если это просто открыть его и найти столбец и использовать SQL-вызов для извлечения необходимого.

Краткий пример формы для извлечения данных из таблицы базы данных:

Форма содержит только GataGridView с именем DataGrid

Имя базы данных: DB.mdf

Название таблицы: DBtable

Имена столбцов в таблице: Имя как varchar (50), Возраст как int, Пол как бит.

Private Sub DatabaseTest_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Public ConString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\{username}\documents\visual studio 2010\Projects\Userapplication prototype v1.0\Userapplication prototype v1.0\Database\DB.mdf;" & "Integrated Security=True;User Instance=True"
    Dim conn As New SqlClient.SqlConnection
    Dim cmd As New SqlClient.SqlCommand
    Dim da As New SqlClient.SqlDataAdapter
    Dim dt As New DataTable
    Dim sSQL As String = String.Empty
    Try
        conn = New SqlClient.SqlConnection(ConString)
        conn.Open() 'connects to the database
        cmd.Connection = conn
        cmd.CommandType = CommandType.Text
        sSQL = "SELECT * FROM DBtable" 'Sql to be executed
        cmd.CommandText = sSQL 'makes the string a command
        da.SelectCommand = cmd 'puts the command into the sqlDataAdapter
        da.Fill(dt) 'populates the dataTable by performing the command above
        Me.DataGrid.DataSource = dt 'Updates the grid using the populated dataTable

        'the following is only if any errors happen:
        If dt.Rows.Count = 0 Then
            MsgBox("No record found!")
        End If
    Catch ex As Exception
        MsgBox(ErrorToString)
    Finally
        conn.Close() 'closes the connection again so it can be accessed by other users or programs
    End Try
End Sub

Это позволит получить все строки и столбцы из таблицы базы данных для просмотра.
Если вы хотите только получить имена, просто измените вызов sql: "SELECT Name FROM DBtable" таким образом DataGridView будет показывать только имена столбцов.

Я только новичок, но я бы настоятельно советовал избавиться от тезисов, создающих волшебников. Используя SQL, у вас есть полный доступ к вашей базе данных и что происходит.
Также последнее, если ваша база данных не использует SQLClient, просто измените ее на OleDB.

Пример: "Dim conn As New SqlClient.SqlConnection" становится: Dim conn As New OleDb.OleDbConnection

Ответ 5

' i modify the code for Datatable 

For Each c as DataColumn in dt.Columns
 For j=0 To _dataTable.Columns.Count-1
            xlWorksheet.Cells (i+1, j+1) = _dataTable.Columns(j).ColumnName
Next
Next

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