您的位置:首页 > 编程语言 > VB

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

2008-12-28 15:25 621 查看



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
__________________________________________________________________________
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息