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
__________________________________________________________________________