【问题标题】:Filling a DataGridView from SQLReader从 SQLReader 填充 DataGridView
【发布时间】:2024-01-16 03:32:01
【问题描述】:

我有点卡在我写的一些代码上

大纲是我正在从 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

我也尝试实现数据表,但收到数据类型的转换错误 任何帮助将不胜感激

谢谢大家

【问题讨论】:

  • 我刚刚通过实现数据表解决了这个问题。我将阅读器传递给数据表,然后将dataridview的数据源分配给数据表
  • 我不明白为什么这个问题被否决了,特别是因为没有对被否决的解释......
  • 感谢代表更改,非常感谢

标签: datagridview vb.net-2010 sqldatareader


【解决方案1】:

您不能将数据阅读器直接绑定到 WinForms 中的数据网格视图。相反,您可以使用阅读器加载数据表并将数据表分配给 DataGridView 的数据源

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

【讨论】:

  • 抱歉回复晚了,我一直在度假,很感谢您