VB应用程序中的NullReferenceException错误?

时间:2011-04-11 21:34:14

标签: vb.net nullreferenceexception

我正在为呼叫建立投票系统,并尝试在VB中构建它。到目前为止,这就是我所拥有的:

    Dim con As New OleDb.OleDbConnection
    Dim dbProvider As String
    Dim dbSource As String

    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
    dbSource = "Data Source = C:\PhonePoll.mdb"

    con.ConnectionString = dbProvider & dbSource

    con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\PhonePoll.mdb"

    con.Open()

    'sql = "SELECT * FROM voting"
    'da = New OleDb.OleDbDataAdapter(sql, con)
    'da.Fill(ds, "voting")

    If inc <> -1 Then

        Dim cb As New OleDb.OleDbCommandBuilder(da)
        Dim dsNewRow As DataRow

        dsNewRow = ds.Tables("voting").NewRow()
        dsNewRow.Item("voted") = RadioButton1.Checked.ToString
        dsNewRow.Item("voted") = RadioButton2.Checked.ToString
        dsNewRow.Item("voted") = RadioButton3.Checked.ToString
        dsNewRow.Item("voted") = RadioButton4.Checked.ToString

        ds.Tables("voting").Rows.Add(dsNewRow)

        da.Update(ds, "voting")

        MsgBox("New Record added to the Database")

    End If

    MsgBox("Phone call has been logged")

    con.Close()

此代码包含在“录制通话”按钮中。在表单上,​​有四个单选按钮,所有按钮都有不同的文本值,应输入“投票”表。

我的问题是,当我选择一个单选按钮并单击“录制按钮”时,它会显示以下错误:

  

NullReferenceException:未将对象引用设置为对象的实例。

此错误显示在

行上
dsNewRow = ds.Tables("voting").NewRow()

我不确定我做错了什么。

欢呼帮助!

3 个答案:

答案 0 :(得分:2)

我在实际代码中假设您没有注释掉数据集的SQL和Fill()方法,这只是上面代码中的拼写错误 - 对吗?如果我错了,并且该代码块已被注释掉,那么您的数据集为空,这就是问题......

答案 1 :(得分:0)

不要将所有代码放在一行 - 将其拆分。 ds是null,或者 ds.Tables(“voting”)返回null,但你永远不会知道,因为它是暂时的。你无法检查它,因为你没有将它存储在变量

这就是我试图永远不会打电话太久的原因:

A b = me.foo.bar.baz.fuz.bom()&lt; - 只是在找麻烦!

答案 2 :(得分:0)

ds是null,未初始化

也许你不引用:

'sql = "SELECT * FROM voting"
'da = New OleDb.OleDbDataAdapter(sql, con)
'da.Fill(ds, "voting")