この問題は私を夢中にさせています。
MySQL dataAdapter でデータセットを更新しようとしています。このメソッドは、データベース内の他のテーブルで機能しますが、このテーブルで発生しています。コードの例を次に示します。
String query = "select * from accounts";
DataSet dataSet = new DataSet();
connection.Open();
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(query, (MySqlConnection)connection);
MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(dataAdapter);
dataAdapter.FillSchema(dataSet, SchemaType.Source);
commandBuilder.RefreshSchema();
dataAdapter.Fill(dataSet);
dataSet.Tables[0].Rows[0]["balance"] = 1M;
dataAdapter.Update(dataSet);
更新しようとすると、例外がスローされます。これは私のコードの単純化された例ですが、同じ結果が得られることに注意してください。
エラーを調査したところ、
1) Fill 以降にこのデータが別のユーザーによって変更された
場合、2) 行が存在しない場合。
しかし、これは私の開発マシンで発生するため、別のユーザーによってデータが変更される可能性はありません。そして、Rows[0] で例外をスローしないため、行は明らかに存在します。
そして、私が言ったように、これはこの 1 つのテーブルでのみ発生します。テーブルには主キーとして int があり、更新しようとしている列は Decimal なので、何が問題なのかわかりません。
アドバイスありがとうございます。