0
我正在研究一個VB.NET項目,並試圖在SQL數據庫中插入/更新一些行。併發衝突 - UpdateCommand影響了預期的1條記錄中的0 0
要做到這一點,我使用下面的代碼來取回基於3個參數的數據集。 如果數據集沒有返回任何數據,那麼代碼只是插入一個新行。
這工作正常。
但是,如果數據帶回一行(意味着行已經存在於表中),那麼我想要更新其中一個值。 這是我在這篇文章的標題中得到錯誤。
任何人都可以幫助我哪裏我錯了嗎?
預先感謝您。
Dim x_Update As Boolean
AdaptSql = New Data.AdapterX(SQL_ConnectionString)
DS = New DatsetX
AdaptSql.Fill(DS, Number, PeriodID, TypeID)
If DS.tbl_A.Count > 0 Then
x_Row = DS.tbl_A(0)
x_Row.BeginEdit()
x_Update = True
Else
x_Row = DS.tbl_A.NewRow
End If
x_Row.Number = Number
x_Row.DateID = PeriodID
x_Row.TypeID = TypeID
x_Row.Value = Value
x_Row.UpdatedDate = Date.Now
If x_Update = False Then DS.tbl_A.Addtbl_ARow(x_Row)
x_Row.EndEdit()
AdaptSql.Update(DS)
x_Row = Nothing
DS.Dispose()
AdaptSql = Nothing
謝謝你 - 我已經按照你的說法檢查了RowState,並且對於作爲新行進入的條目,然後按預期狀態「添加」。對於正在更新的行是「修改」的。現在我不完全確定如何處理這些信息?我認爲這個問題是由於它顯示爲「修改」的事實而發生的? –
通常這種錯誤是由於它在嘗試更新時無法找到DB行 - 它期望根據適配器構造的條件找到0時更新一行。另一個嘗試是使用sql profiler來監視從您的代碼發送到SQL的SQL文本命令來執行更新。然後檢查sql文本命令以查看任何錯誤\並且可以給出一些線索,但不能保證。 – Rex
我可以從代碼中想到另一點:你更新了字段[UpdateDate],你是否檢查過表中是否有任何觸發器在其他字段更新時自動更新此字段?這可能會導致併發異常 – Rex