天天看點

[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

__________________________________________________________________________