2010-12-13 7 views
0
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 в конце всего. любые идеи, в чем моя ошибка?Невозможно вставить строку в таблицу с использованием OleDBAdapter

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

- = Наум = -

ответ

0

Что вы InsertCommand?

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

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

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

+0

ВСТАВКА: ВСТАВКА В транспортные средства (номер транспортного средства, Mfg транспортного средства, пройденное расстояние, время работы, грузовик № 1 серийный номер, грузовик № 2 серийный номер, номер грузовика № 3) ЗНАЧЕНИЯ (?,?,?,? ,?,?,?), и после удаления этих двух строк я получаю исключение синтаксиса. – Bjorkson

+0

Можете ли вы опубликовать исключение? – TalentTuner

+0

Ошибка синтаксиса в инструкции INSERT INTO. Не очень информативно. Я попросил befor, и я получил повторы о специальных символах. Таблица forparadox должна быть quted с (""), но когда я попытался с sql comman, у меня возникла другая проблема: http://stackoverflow.com/questions/4366988/problem- с-insert-query-to-paradox-table-using-c – Bjorkson

0

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

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

According to MSDN:

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

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

Смежные вопросы