我从网上获得了这个代码,但我不能让这个代码在我正在编程的系统上工作,所以我使用相同的代码到另一个系统并且它工作,当我尝试将它用于我的系统时,它失败了,所以我开始了一个新程序,它仍然失败......我的程序出了什么问题?这是代码示例:
Public Class Form2
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
Dim inc As Integer
Dim max As Integer
Private Sub AllRecordsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
dbProvider = "PROVIDER = Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source = C:\Users\Josh\Documents\enrollment.mdb"
con.ConnectionString = dbProvider & dbSource
con.Open()
sql = "SELECT * FROM Personal"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "enrollment")
max = ds.Tables("enrollment").Rows.Count
inc = -1
con.Close()
Private Sub Sve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Sve.Click
If inc <> -1 Then
Dim cb As New OleDb.OleDbCommandBuilder(da)
Dim dsnewrow As DataRow
dsnewrow = ds.Tables("enrollment").NewRow()
dsnewrow.Item("LastName") = TextLast.Text
ds.Tables("enrollment").Rows.Add(dsnewrow)
da.Update(ds, "enrollment")
MsgBox("Saved!")
End If
End Sub
每当我运行程序时,它都会编译,但是当我单击提交按钮时,此消息显示“NullReference异常未处理对象引用未设置为对象的实例”并且它指向.NewRow
答案 0 :(得分:0)
如果我读得对,你就会在这一行得到例外:
dsnewrow = ds.Tables("enrollment").NewRow()
这意味着ds
为null
(不太可能,因为它已初始化),或者数据集中不存在“注册”表。
然而,很难回答你的问题,因为你没有发布所有的代码(第一个sub的末尾缺失,这表明可能还缺少更多的代码)。
在点击提交之前,您是否点击了工具区设置?看起来它负责填充数据集。
但是,大多数情况下,我建议您在开始发布有关它的问题之前,先学会更好地理解您复制的代码......