데이터 어댑터를 통해 데이터 테이블에 변경 한 내용을 업데이트하는 데 문제가 있습니다. "Concurrency violation : UpdateCommand가 10 행 중 0 개에 영향을줍니다."데이터 어댑터로 SQL 데이터베이스를 업데이트하는 동시성 위반
'Get data
Dim Docs_DistributedTable As New DataTable("Docs_Distributed")
Dim sql = "SELECT DISTINCT CompanyID, SortKey, OutputFileID, SequenceNo, DeliveredDate, IsDeliveryCodeCounted, USPS_Scanned FROM Docs_Distributed_Test"
Using sqlCmd As New SqlCommand(sql, conn)
sqlCmd.CommandType = CommandType.Text
Docs_DistributedTable.Load(sqlCmd.ExecuteReader)
End Using
'Make various updates to some records in DataTable.
'Update the Database
Dim sql As String = "UPDATE Docs_Distributed "
sql += "SET DeliveredDate = @DeliveredDate "
sql += "WHERE SequenceNo = @SequenceNo"
Using transaction As SqlTransaction = conn.BeginTransaction("ProcessConfirm")
Try
Using da As New SqlDataAdapter
da.UpdateCommand = conn.CreateCommand()
da.UpdateCommand.Transaction = transaction
da.UpdateCommand.CommandText = sql
da.UpdateCommand.Parameters.Add("@DeliveredDate", SqlDbType.DateTime).SourceColumn = "DeliveredDate"
da.UpdateCommand.Parameters.Add("@SequenceNo", SqlDbType.Int).SourceColumn = "SequenceNo"
da.ContinueUpdateOnError = False
da.Update(Docs_DistributedTable)
End Using
transaction.Commit()
Catch ex As Exception
transaction.Rollback()
End Try
End Using
이제 catch가 있습니다. DISTINCT 레코드를 선택하고 본질적으로 SequenceNo 당 하나의 행을 가져옵니다. 동일한 SequenceNo가있는 행이 여러 개있을 수 있으며이 행이 모두 업데이트 될 것으로 기대하고 있습니다. 이것이 내 문제와 관련이 있는지 확실하지 않습니다.
OMG. 그거였다. 나는 나무에 숲을 볼 수 없다는 오류에 너무 집착했습니다. 나는 내 자신이 너무 부끄럽다. – Brett