我有一个表单,其中包含从 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
这也正确吗?