Windows窗体应用程序:System.NullReferenceException错误

时间:2012-05-22 18:55:30

标签: vb.net

美好的一天,

我一直试图弄清楚我的应用程序中的错误来源。这个函数(GetConcentrations())用于将数据库中的数据显示到DataGridView上。该函数在PageLoad中调用但工作正常,但当我在另一个Sub中调用它时,我收到此错误。

有人能帮帮我吗?我已经尝试了不同的方式。

谢谢!

enter image description here

以下是代码:

Private Sub GetConcentrations()
    Dim conString As String = ConfigurationManager.ConnectionStrings("dbAsthmaConnectionString").ConnectionString
    Me.dataAdapter = New SqlDataAdapter("Select * from tblConcentrations", conString)
    'Dim adapter As New SqlDataAdapter("Select * from tblConcentrations", conString)
    Dim dataset As New Data.DataSet

    Try
        Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter)

        Dim table As New DataTable()
        table.Locale = System.Globalization.CultureInfo.InvariantCulture
        Me.dataAdapter.Fill(table)
        'Dim datasetgetconcentrations = New DataSet
        Me.dataAdapter.Fill(dataset)
        Me.bindingSource1.DataSource = table

        DataGridView3.AutoResizeColumns(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader)

        DataGridView3.DataSource = dataset.Tables(0)

        dataset.Dispose()

    Catch ex As Exception
        MsgBox("Failed to display the concentration table (GetConcentrations)!", MsgBoxStyle.Information)
    End Try

    'Dim ConcentrationValue As Double = DataGridView2.Rows.Contains
    'TextBoxCurrentConcentration.Text = txtMessage.Text
End Sub

1 个答案:

答案 0 :(得分:0)

我不明白你为什么两次打电话给Fill方法 一次填充DataTable,再填充一次DataSet。实际上只需要数据集的那个。 如果这会改变你的问题,你能试试吗?

    Dim ds as New DataSet
    ds.Locale = System.Globalization.CultureInfo.InvariantCulture 
    Me.dataAdapter.Fill(ds) 
    DataGridView3.AutoResizeColumns(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader) 
    DataGridView3.DataSource = ds.Tables(0) 

此外,不要在退出时丢弃数据集,您仍在使用它 在这种情况下,最好让垃圾收集处理此任务。