1

私は TableAdapters を使用するのが初めてで、何が起こっているのかわかりません。基本的に、生成されたデータセットを使用して、あるデータベースから別のスキーマを持つ別のデータベースにデータをエクスポートしようとしています。コードをステップ実行すると、ターゲット データベースの行に値を入力するという点で、すべてが正常に機能しているように見えます。ただし、ターゲット データベースに行を追加しようとすると、行が挿入されないようです。何かアイデアはありますか?プロジェクトに追加されたデータベースを出力ディレクトリにコピーしないように設定しました...そのため、Webで見た提案は機能していないようです。

        OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\database.mdb;");

        SomeTableAdapter tableAdapter = new SomeTableAdapter();
        tableAdapter.Connection = oleDbConnection;
        tableAdapter.Connection.Open();

        SomeDataSet.SomeDataTable dataTable = tableAdapter.GetData();
        SomeDataSet.SomeDataRow dataRow = null;

        // Do some checks on the existing rows

        // Creation of new row is necessary
        if (dataRow == null)
            dataRow = dataTable.NewSomeRow();

            // Populate row fields

            dataTable.AddSomeRow(dataRow);
            dataTable.AcceptChanges();
        }
        else
        {
            // Update exiting row
        }

        tableAdapter.Update(dataTable);
        tableAdapter.Connection.Close();
4

1 に答える 1

2

AcceptChanges() を呼び出して自分自身を撃っています。データセットへのすべての変更が「コミット済み」としてマークされるため、次の更新では単純に無視されます。

高度なシナリオを除いて、通常は AcceptChanges を直接呼び出すべきではありません。

于 2009-12-24T18:36:45.987 に答える