0

我有一个表单,其中包含从 SQL 中提取的可以编辑的信息,一旦表单关闭,我想将任何更改写回数据库或丢弃它们。我不想存储两组数据进行比较,也不想重新查询相同的 SQL。

我想出了创建一个 SQLCommand 项目列表并在要保存更改时对其进行处理的想法,但是在尝试将 SQLCommand 添加到列表时出现以下错误:

Application1.exe 中出现“System.NullReferenceException”类型的未处理异常

附加信息:对象引用未设置为对象的实例。

我可能错过了一些非常简单的东西,但我自己看不到什么。

我的代码如下:

Public Class frm1
    Public Property ContID As String
    Dim PendingSQLChanges As List(Of SqlCommand)

Private Sub btnAddTel_Click(sender As Object, e As EventArgs) Handles btnAddTel.Click
        Using x As New SqlCommand("INSERT into ContactTels (Tel, CoID) Values (@NewValue, @ContID) ;--", cnn)
            x.Parameters.Add("@NewValue", SqlDbType.NVarChar, 100).Value = strNewvalue
            x.Parameters.Add("@ContID", SqlDbType.Int).Value = ContID
            PendingSQLChanges.Add(x) <This is the line I get the error on.
            btnSave.Enabled = True
        End Using
End Sub

如您所见,我正在向 SQLCommand 添加参数,否则我将使用包含 SQLCommand.Commandtext 的字符串列表并稍后使用它。

如果我能让列表工作,我将用来处理保存的命令的代码是:

        For x = 0 To PendingSQLChanges.Count - 1
            PendingSQLChanges(x).ExecuteNonQuery()
        Next

这也正确吗?

4

1 回答 1

2

尝试New在您的List(of SqlCommand)声明中使用:

 Dim PendingSQLChanges As New List(Of SqlCommand)

它没有被实例化,因此Null Reference.

于 2013-11-01T11:23:02.463 回答