Невозможно вставить строку в таблицу с помощью OleDBAdapter - PullRequest
0 голосов
/ 13 декабря 2010
OleDbConnection _connection = new OleDbConnection();
        StringBuilder ConnectionString = new StringBuilder("");
        ConnectionString.Append(@"Provider=Microsoft.Jet.OLEDB.4.0;");
        ConnectionString.Append(@"Extended Properties=Paradox 5.x;");
        ConnectionString.Append(@"Data Source=C:\Clients\Rail\Wheelsets;");
        _connection.ConnectionString = ConnectionString.ToString(); 
        _connection.Open();
        OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Vehicles;", _connection);
        DataSet dsRetrievedData = new DataSet();
        da.Fill(dsRetrievedData);   
        OleDbCommandBuilder builder = new OleDbCommandBuilder(da);
        da.InsertCommand = builder.GetInsertCommand();
        ////Insert new row
        DataRow rowNew = dsRetrievedData.Tables[0].NewRow();
        rowNew[dsRetrievedData.Tables[0].Columns[0].ColumnName] = "978";
        rowNew[dsRetrievedData.Tables[0].Columns[1].ColumnName] = "222";
        rowNew[dsRetrievedData.Tables[0].Columns[4].ColumnName] = "999";
        rowNew[dsRetrievedData.Tables[0].Columns[5].ColumnName] = "999";
        rowNew[dsRetrievedData.Tables[0].Columns[6].ColumnName] = "999";
        dsRetrievedData.Tables[0].Rows.Add(rowNew);
        dsRetrievedData.Tables[0].AcceptChanges();
        dsRetrievedData.AcceptChanges();
        int result = da.Update(dsRetrievedData);

вот код, который я использую.как видите, у меня есть таблица парадоксов.а некоторые как результат = 0 в конце всего этого.какие-либо идеи, в чем моя ошибка?

спасибо заранее.

- = Noam = -

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

Удалить вызов AcceptChanges():

dsRetrievedData.Tables[0].AcceptChanges();
dsRetrievedData.AcceptChanges();

Согласно MSDN :

Передает все изменения, внесенные в этот набор данных с момента его загрузки.или с момента последнего вызова AcceptChanges.

Это означает, что помеченная добавленная строка помечается как not new.

0 голосов
/ 13 декабря 2010

Что такое ваш InsertCommand?

Также попробуйте после удаления этих строк

dsRetrievedData.Tables[0].AcceptChanges();
dsRetrievedData.AcceptChanges();

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

...