天天看点

[VB.NET]ADO.NET的Update问题

[VB.NET]ADO.NET的Update问题

ADO.NET的Update问题

今天看着教程用VB做了一个Windows Form程序,运行一切正常,还可以进行添加、修改,但无法把修改写入数据库,原来用C#写程序时也遇见过同样的问题,不知有那位兄弟在类似经历。

程序读的是SQL SERVER自带的Pubs数据库,读取Stores和sales两个表,用了两个DATAADAPTER:StoresTableAdapter和SalesTableAdapter1,dataAdapter用Fill方法填充数据集:PubsDataSet,填充的代码如下:

Me.StoresTableAdapter.Fill(Me.PubsDataSet.stores)

Me.SalesTableAdapter1.Fill(Me.PubsDataSet.sales)

然后用BindingSource对数据进行管理,更改与添加的过程一切正常,下面是我UpdateAll的代码部分:

Private Sub UpdateAll()

''bmStores.EndCurrentEdit()

bmStores.EndEdit()

If (Me.PubsDataSet.HasChanges()) Then

Try

''首先保存子数据的删除内容

''再保存父数据的更新内容

''最后再保存子数据的其它更改

''第一步

If Not PubsDataSet.sales.GetChanges(DataRowState.Deleted) Is Nothing Then

Dim dtSalesdeletes As DataTable

dtSalesdeletes = Me.PubsDataSet.sales.GetChanges(DataRowState.Deleted)

Me.SalesTableAdapter1.Update(dtSalesdeletes)

End If

''第二步

If Not PubsDataSet.stores.GetChanges(DataRowState.Deleted) Is Nothing Then

Me.StoresTableAdapter.Update(Me.PubsDataSet.stores)

End If

''第三步

''更新添加

If Not PubsDataSet.sales.GetChanges(DataRowState.Added) Is Nothing Then

Dim dtSalesAdds As DataTable

dtSalesAdds = Me.PubsDataSet.sales.GetChanges(DataRowState.Added)

Me.SalesTableAdapter1.Update(dtSalesAdds)

End If

''更新修改

If Not PubsDataSet.sales.GetChanges(DataRowState.Modified) Is Nothing Then

Dim dtSalesChanges As DataTable

dtSalesChanges = Me.PubsDataSet.sales.GetChanges(DataRowState.Modified)

Me.SalesTableAdapter1.Update(dtSalesChanges)

End If

Me.PubsDataSet.AcceptChanges()

Me.btnSave.Enabled = False

Catch ex As Exception

MessageBox.Show(ex.Message)

End Try

End If

End Sub

在程序里点击按钮“btnSave”调用该函数,如果PubsDataSet的HasChanges()不为空,btnSave.Enable=True,在上面的代码中可以看到在

Me.PubsDataSet.AcceptChanges()

之后有:

Me.btnSave.Enabled = False

每次运行后,点击保存后,btnSave按钮也都不可用,当前显示修改成功,但打开数据库却发现并没有修改,再次运行程序,依旧是修改前的内容,偶现在正在纳闷之中,在网上也没查到类似问题,偶原来用C#时,也遇见过这样的问题,从那时到现在,已经重装过多次系统了,现在正在怀疑是不是偶用的软件问题……

__________________________________________________________________________

看看数据库里的表有没有主键,没有的话是不行的,就要自己定义更新的语句

__________________________________________________________________________

估计是主键约束

__________________________________________________________________________

该回复于2008-08-31 08:39:40被管理员或版主删除

__________________________________________________________________________

http://user.qzone.qq.com/784866864

__________________________________________________________________________

楼上的QQ登录不了

应该不是主键约束问题,因为我用的是系统数据库!

__________________________________________________________________________

我也抄书上的例子试过一次,有时能添加,有又添不进去,删除没问题。不知道什么原因。

__________________________________________________________________________

建议自己拼写SQL

__________________________________________________________________________