2011-07-22 25 views

Trả lời

18

Đây là cách để lấy một tên cột từ một DataColumn:

MyDataTable.Columns(1).ColumnName 

Để có được tên của tất cả các DataColumns trong DataTable của bạn:

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 

Tài liệu tham khảo

+0

tên Dim As String() = new String() {} Đối Mỗi cột Như DataColumn Trong testTable.Columns name = column.ColumnName Tiếp Nó không thích điều này vì im thêm một chuỗi để Dim tên As string() = new string() {} Đối Mỗi cột Như DataColumn Trong testTable.Columns name = column.ColumnName Tiếp tôi đang cố gắng để thêm một chuỗi vào một mảng chuỗi, tôi là gì doin sai ở đây? –

+0

Cập nhật mẫu mã của tôi để đạt được những gì tôi tin rằng bạn đang theo đuổi. –

1

Nhìn vào

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

hay:

dt.GetDataTableSchema (...)

2

Bạn có thể lặp thông qua bộ sưu tập cột của DataTable .

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); 
} 

Hope this helps!

0

Bạn có quyền truy cập vào cơ sở dữ liệu của mình, nếu chỉ cần mở nó lên và tra cứu cột và sử dụng cuộc gọi SQL để truy xuất dữ liệu cần thiết.

Một ví dụ ngắn về một hình thức để lấy dữ liệu từ một bảng cơ sở dữ liệu:

Mẫu chỉ chứa một DataGrid GataGridView tên

Database name: DB.mdf

tên Bảng: DBtable

Tên cột trong bảng: Tên là varchar (50), Độ tuổi dưới dạng int, Giới tính dưới dạng 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 

Điều này sẽ tìm nạp tất cả các hàng và cột từ bảng cơ sở dữ liệu của bạn để xem xét.
Nếu bạn muốn chỉ lấy tên chỉ cần thay đổi cuộc gọi sql với: "SELECT Name FROM DBtable" theo cách này DataGridView sẽ chỉ hiển thị tên cột.

Tôi chỉ là tân binh nhưng tôi khuyên bạn nên loại bỏ các thuật sĩ tự động tạo ra các thuật sĩ. Sử dụng SQL bạn có toàn quyền truy cập vào cơ sở dữ liệu của bạn và những gì sẽ xảy ra.
Ngoài ra một điều cuối cùng, nếu cơ sở dữ liệu của bạn không sử dụng SQLClient chỉ cần thay đổi nó thành OleDB.

Ví dụ: "Dim conn As New SqlClient.SqlConnection" trở thành: 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 

Hy vọng điều này có thể được giúp đỡ!

Các vấn đề liên quan