vb连接access数据库出现无法找到表0

Imports System.Data.OleDb

Public Class Form1
Dim cn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim a As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\db1.mdb;Persist Security Info=False"
cn = New OleDbConnection(cnStr)
Dim sql As String = "select * from s"
da = New OleDbDataAdapter(sql, cn)
ds = New DataSet
da.Fill(ds, "s")
DataGridView1.DataSource = ds.Tables(0)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim cnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\db1.mdb;Persist Security Info=False"
    cn = New OleDbConnection(cnStr)
    a = a + 1
    Dim m = a
    Dim sql As String = "insert into s(sNo,SN,Sex,Age,Dept) values ('" & m & " ','" & "21" & " ','" & "男" & " ','" & "21" & " ','" & "呵呵" & "')"
    da = New OleDbDataAdapter(sql, cn)
    ds = New DataSet
    da.Fill(ds, "s")
    DataGridView1.DataSource = ds.Tables(0)
    cheshi()   //注释
End Sub

Private Sub cheshi()
    Dim cnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\db1.mdb;Persist Security Info=False"
    cn = New OleDbConnection(cnStr)
    Dim sql As String = "select * from s"
    da = New OleDbDataAdapter(sql, cn)
    ds = New DataSet
    da.Fill(ds, "s")
    DataGridView1.DataSource = ds.Tables(0)
End Sub

End Class


cheshi是重新读取可以。
但是不知道为什么DataGridView1.DataSource = ds.Tables(0),这个会出现错误,无法找到表0,
我的目的是更新表。但是,在刚才那个地方会直接崩溃,不知道为什么。
应该怎么修改,谢谢。

cn = New OleDbConnection(cnStr)
cn.Open()

因为你的 Button1_Click() 中执行的是 INSERT 语句啊,这是没有返回记录的!应该改用 ExecuteNonQuery() 执行插入 SQL。
刷新数据还是调用 cheshi() 不变。
又:Form1_Load() 改为已经调用 cheshi(),代码要重用而不是复制。