Visual Basicのエラーです。
System.Data.DBConcurrencyException: ‘同時実行違反 : UpdateCommand によって、処理予定の 1 レコードのうち 0 件が処理されました。’
データグリッドから「Update」を行う処理です。
結論
このエラーの原因はいろいろあるようです、僕の場合はMySQLデータベースのテーブル定義において、日付項目で日付の自動取得(ON UPDATE CURRENT_TIMESTAMP())を指定していたことが、原因でした。
エラーが発生していた状況
以下のような画面でデータグリッドからデータベースを更新を行ったところ、2回続けて更新処理を行うと、エラーが発生しました。
コーディングは以下です、特別なことは行っていません。
Imports System.Security.Cryptography
Imports Microsoft.SqlServer
Imports MySql.Data.MySqlClient
Public Class Form1
Dim builder As New MySql.Data.MySqlClient.MySqlConnectionStringBuilder
Dim con As MySql.Data.MySqlClient.MySqlConnection
Dim da As MySqlDataAdapter
Dim dt As DataTable
Dim sql As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
builder.Server = "localhost"
builder.Port = 3306
builder.Database = "テストdb"
builder.UserID = "root"
builder.Password = ""
con = New MySql.Data.MySqlClient.MySqlConnection(builder.ToString())
con.Open()
End Sub
Private Sub closeButton_Click(sender As Object, e As EventArgs) Handles closeButton.Click
con.Close()
Me.Close()
End Sub
Private Sub okButton_Click(sender As Object, e As EventArgs) Handles okButton.Click
sql = "select * from 売上tbl"
da = New MySqlDataAdapter(sql, con)
dt = New DataTable
da.Fill(dt)
DG.DataSource = dt
End Sub
Private Sub updtButton_Click(sender As Object, e As EventArgs) Handles updtButton.Click
Dim sqlcb = New MySql.Data.MySqlClient.MySqlCommandBuilder(da)
da.Update(dt)
End Sub
End Class
考えられる原因
正直良くわからないですが、日付が自動で変わるので、他のユーザーから更新されたものと勘違いしたのでしょうね。