0

この問題は私を夢中にさせています。

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 なので、何が問題なのかわかりません。

アドバイスありがとうございます。

4

1 に答える 1