从SQLReader中填充DataGridView

8

我有一些写代码的困难。

大致情况是,我正在从SQL数据库中读取一些数据,并想在窗体上的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解决了这个问题。我将reader传递给了datatable,然后将dataridview的数据源分配给了datatable。 - PowerMan2015
我不明白为什么这个问题被踩了,特别是因为没有解释踩的原因... - NobodysNightmare
感谢您的声望变化,非常感激。 - PowerMan2015
1个回答

17

你不能直接将Datareader绑定到WinForms中的DataGridView。相反,你可以使用读取器加载一个DataTable,并将DataTable分配给DataGridView的数据源。

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

抱歉回复晚了,我正在度假中。感谢您的帮助。 - PowerMan2015

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接