从 SQLReader 填充 DataGridView

Posted

技术标签:

【中文标题】从 SQLReader 填充 DataGridView【英文标题】:Filling a DataGridView from SQLReader 【发布时间】:2013-08-11 16:16:17 【问题描述】:

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

大纲是我正在从 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的数据源分配给数据表 我不明白为什么这个问题被否决了,特别是因为没有对被否决的解释...... 感谢代表更改,非常感谢 【参考方案1】:

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

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

【讨论】:

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

以上是关于从 SQLReader 填充 DataGridView的主要内容,如果未能解决你的问题,请参考以下文章

递归问题==优化 还有数据库sqlreader

如何根据 DataGridView 中的选定行将组合框中的特定项目设置为选定项?

Datagridview 组合框为空

SqlDataReader 性能缓慢

一个简易的反射类库NMSReflector

c# 消除datagridview 单元格选中边框