Итак, я создаю datatable из таблицы, которую я не могу напрямую просмотреть (т.е. используя управление сервером sql). Я хочу найти имена столбцов, которые находятся в datatable, что было бы правильным способом сделать это?
В vb.net, как получить имена столбцов из datatable
Ответ 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
Надеюсь, это поможет!