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