Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim da As New OleDb.OleDbDataAdapter
Dim sql As String
dbProvider = "Provider=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source = C:\Users\Blessing\Documents\Ishvatest.mdb"
con.Connectionstring = dbProvider & dbSource
con.Open()
sql = "SELECT * From Employees"
da = New OleDb.OleDBDataAdapter(sql, con)
da.Fill(ds, "Ishvatest")
MsgBox("Ishvatest is now open")
con.Close()
MsgBox("Ishvatest is now closed")
txtID.Text = ds.Tables("Employees").Rows(0).Item(1)
txtID.Name = ds.Tables("Employees").Rows(0).Item(2)
如果我使用此代码运行程序,我会收到错误“Null Reference Exception未处理”
我的代码出了什么问题?
答案 0 :(得分:1)
好吧,假设表不是空的,那么问题可能就在这里
da.Fill(ds, "Ishvatest")
在这里,你提交一个数据集并命名它的第一个名为“Ishvatest”的表,但是你试着从名为“Employees”的表中读取。没有名称
的表格更改为(或da.Fill(ds,“Employees”))
txtID.Text = ds.Tables("Ishvatest").Rows(0).Item(1)
txtID.Name = ds.Tables("Ishvatest").Rows(0).Item(2)
另一个解决方案可能是使用索引来引用数据表而不是名称和(作为额外的预防措施)检查是否有任何记录要读
If ds.Tables.Count > 0 AndAlso ds.Tables(0).Rows.Count > 0 Then
txtID.Text = ds.Tables(0).Rows(0).Item(1)
txtID.Name = ds.Tables(0).Rows(0).Item(2)
End If
答案 1 :(得分:0)
此错误总是同样的事情。什么都没有。 第一个是你在使用它之前没有给如果你超过这一点,其他人很可能会发生。con
分配任何东西,因此它是null
;
最重要的是,您需要在使用之前为某个实例分配内容(当引用类型时)。因此,con
必须是New OleDbConnection()
。或者,您需要在使用之前确保它是某些东西(如果返回某些内容,例如,使用ds.Tables("Employees").Rows(0)
:是否有一行?)
答案 2 :(得分:0)
您正在使用
da.Fill(ds, "Ishvatest")
尝试将您的数据绑定到“员工”!!!
txtID.Text = ds.Tables("Employees").Rows(0).Item(1)
txtID.Name = ds.Tables("Employees").Rows(0).Item(2)
应该是
txtID.Text = ds.Tables("Ishvatest").Rows(0).Item(1)
txtID.Name = ds.Tables("Ishvatest").Rows(0).Item(2)
或者你应该填写数据集如下:
da.Fill(ds, "Employees")
并使用
txtID.Text = ds.Tables("Employees").Rows(0).Item(1)
txtID.Name = ds.Tables("Employees").Rows(0).Item(2)