VB+access的DataGridView的更新有关问题

求助VB+access的DataGridView的更新问题
VB+access 里面表就一张 已经设置好主键(叫ID列)
DataGridView里面更改数据后用 Update不能更新数据库,求高手指点。
好像添加可以更新,修改和删除时候会报错。删除时 Adapter.Update(DataGridView1.DataSource)会报错:
对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。

代码如下
    Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
        Dim Cn As New OleDbConnection(" Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\hospital.accdb")
        Dim SQLCm As OleDbCommand = Cn.CreateCommand
        Dim Adapter As OleDbDataAdapter
        Adapter = New OleDbDataAdapter(SQLCm)
        Dim Builder As New OleDbCommandBuilder(Adapter)
        Adapter.SelectCommand = SQLCm

        Dim Table As New DataTable

        SQLCm.CommandText = "SELECT * FROM DB1 "
        Adapter.Fill(Table)

        Adapter.Update(DataGridView1.DataSource)
    End Sub
------解决方案--------------------
更新和删除,加上UpdateCommand和DeleteCommand

    Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
        Dim Cn As New OleDbConnection(" Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\hospital.accdb")
        Dim SQLCm As OleDbCommand = Cn.CreateCommand
        Dim Adapter As OleDbDataAdapter
        Adapter = New OleDbDataAdapter(SQLCm)
        Dim Builder As New OleDbCommandBuilder(Adapter)
        Adapter.SelectCommand = SQLCm

        Dim Table As New DataTable

        SQLCm.CommandText = "SELECT * FROM DB1 "
        Adapter.Fill(Table)
        
        Adapter.UpdateCommand = Builder.GetUpdateCommand()
        Adapter.DeleteCommand = Builder.GetDeleteCommand()
        
        Adapter.Update(DataGridView1.DataSource)
    End Sub

------解决方案--------------------
表要设置主键,否则没法更新和删除。因为没有主键,ADO.NET没法知道你内存中修改的记录对应的数据库中的哪一条,总不能仅仅因为字段值一样就当作一条吧。
------解决方案--------------------
可能没有主键