2010-12-13 90 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

感謝前沿。

- = Noam = -

回答

0

什麼是您的InsertCommand?

也可以嘗試刪除這些線

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

,如果你調用acceptChanges DataTable中的所有更改被接受後,因此沒有被更改的行因此沒有更新

+0

插入命令:INSERT INTO車輛(車輛編號,車輛製造商,已行駛的距離,運營時間,卡車#1序列號,卡車#2序列號,卡車#3序列號)值(?,?,?,? ,?,?,?),並刪除這2行後,我得到一個語法異常。 – Bjorkson 2010-12-13 11:07:46

+0

你能發佈例外嗎? – TalentTuner 2010-12-13 11:09:21

+0

INSERT INTO語句中的語法錯誤。信息量不大。我問貝福,我得到關於特殊字符forparadox表的重放需要與(「」)quast,但是當我嘗試與SQL COMMMAN我得到了其他問題:http://stackoverflow.com/questions/4366988/problem- with-insert-query-to-paradox-table-using-c – Bjorkson 2010-12-13 11:12:16

0

刪除調用AcceptChanges()

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

According to MSDN

提交所有對此 DataSet所做的更改,因爲它已加載或自上次調用 時調用 。

這意味着,它將新添加的行標記爲not new