2011-07-22 219 views

Respuesta

18

Esta es la forma de recuperar un nombre de columna de una DataColumn:

MyDataTable.Columns(1).ColumnName 

para obtener el nombre de todos los DataColumns dentro de sus 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 

Referencias

+0

nombre Dim como secuencia() = New String() {} para cada columna Como DataColumn En testTable.Columns name = column.ColumnName Siguiente No le gusta esto porque im adición de una cadena en Dim nombrar como secuencia() = New string() {} para cada columna Como DataColumn En testTable.Columns name = column.ColumnName Siguiente estoy intentando agregar una cadena a una matriz de cadenas, lo que estoy doin mal aquí? –

+0

Actualicé mi muestra de código para lograr lo que creo que busca. –

1

Mira

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

o:

dt.GetDataTableSchema (...)

2

Puede recorrer la colección de columnas de la tabla de datos .

VB

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

C#

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

Espero que esto ayude!

0

Tiene acceso a su base de datos, de ser así solo ábrala y busque la columna y use una llamada SQL para recuperar la necesaria.

Un breve ejemplo de un formulario para recuperar datos de una tabla de base de datos:

Formulario sólo contienen una cuadrícula de datos GataGridView llamado

Nombre de la base: DB.mdf

Nombre de la tabla: DBTABLE

Nombres de columna en la tabla: Nombre como varchar (50), Edad como int, Género como bit.

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 

Esto obtendrá todas las filas y columnas de la tabla de la base de datos para su revisión.
Si solo desea recuperar los nombres simplemente cambie la llamada a sql con: "SELECT Name FROM DBtable" de esta manera, DataGridView solo mostrará los nombres de las columnas.

No soy más que un novato, pero le recomendaría encarecidamente que se deshicie de estos autogeoges. Al usar SQL tienes acceso completo a tu base de datos y lo que sucede.
También una última cosa, si su base de datos no utiliza SQLClient simplemente cámbielo a OleDB.

Ejemplo: "Dim conn As New SqlClient.SqlConnection" se convierte en: Dim conn As New OleDb.OleDbConnection

0
' 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 

Hope esto podría ayudar!

Cuestiones relacionadas