Вставка строки в БД Access 2003 с помощью TableAdapter - PullRequest
1 голос
/ 24 декабря 2009

Я новичок в использовании TableAdapters и не уверен в том, что происходит. По сути, я пытаюсь экспортировать данные из одной базы данных в другую базу данных с другой схемой, используя сгенерированный набор данных. Кажется, все работает нормально, с точки зрения заполнения строки целевой базы данных, когда я выполняю код. Однако, когда я пытаюсь добавить строку в целевую базу данных, кажется, что строка не вставляется. Ребята, у вас есть идеи? Я установил базу данных, которая была добавлена ​​в проект, так, чтобы она не копировалась в выходной каталог ... поэтому предложения, которые я видел в Интернете, не сработали.

        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();

1 Ответ

2 голосов
/ 24 декабря 2009

Вы стреляете себе в ногу, вызывая AcceptChanges (). Он помечает все модификации набора данных как «зафиксированные», поэтому следующее обновление просто игнорирует их.

Как правило, вы никогда не должны вызывать AcceptChanges напрямую, за исключением продвинутых сценариев.

...