使用数据集显示访问数据

时间:2013-08-19 10:40:56

标签: vb.net

    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未处理”

我的代码出了什么问题?

3 个答案:

答案 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)