2013-08-09 2 views
6

Im немного застрял на какой-то код, что им писатьЗаполнение DataGridView из SQLReader

канве, что я читаю некоторые данные из базы данных SQL и wantint, чтобы отобразить его в DataGridView на форме. Я подтвердил, что данные возвращаются из базы данных, но я не уверен, почему это не отображается. Я последовал целый ряд обучающих программ в Интернете, но до сих пор не работал

вот мой код

Private Sub PopulateGrid() 
    Dim Con As New SqlClient.SqlConnection 
    Dim strCon As String = CropTrackMod.strConn 
    Dim strCommand As String = "select * from customer" 


    Try 
     Con.ConnectionString = strCon 
     Dim Cm As New SqlClient.SqlCommand(strCommand, Con) 
     Con.Open() 
     Dim reader As SqlClient.SqlDataReader = Cm.ExecuteReader() 

     'test to confirm data received 
     reader.Read() 
     MsgBox(reader.Item("ContactName")) 


     DataGridView1.AutoGenerateColumns = True 
     DataGridView1.DataSource = reader 
     DataGridView1.Refresh() 



    Catch ex As Exception 
     MessageBox.Show(ex.Message, "Error") 

    Finally 
     If Con.State = ConnectionState.Open Then 
      Con.Close() 
     End If 
    End Try 

End Sub 

я также пытался реализовать DataTable, но сообщение об ошибке преобразования от типа данных любой помощь была бы оценена

благодарит ребят

+0

Я только что удалось решить эту проблему путем внедрения DataTable. Я передал читателю данные, а затем назначил источник данных dataridview на datatable – PowerMan2015

+0

. Я не понимаю, почему этот вопрос был занижен, тем более, что нет никакого объяснения нисходящего ... – NobodysNightmare

+0

спасибо за изменение репутации, много оценил – PowerMan2015

ответ

12

Вы не можете связать DataReader непосредственно к DataGridView в WinForms. Вместо того, чтобы вы могли загружаете DataTable с читателем и назначить DataTable к источнику данных из DataGridView

Dim dt = new DataTable() 
dt.Load(reader) 
DataGridView1.AutoGenerateColumns = True 
DataGridView1.DataSource = dt 
DataGridView1.Refresh() 
+0

извините за поздний ответ, я был в отпуске, вы hep оценили – PowerMan2015

+0

Отличное решение, спасибо – destinydz

Смежные вопросы