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になります。私の間違いは何ですか?

前もって感謝します。

-=ノーム=-

4

2 に答える 2

0

あなたの InsertCommand は何ですか?

これらの行を削除してから試してください

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

AcceptChanges を呼び出すと、データテーブルのすべての変更が受け入れられるため、変更された行がないため、更新するものはありません

于 2010-12-13T11:00:18.277 に答える
0

への呼び出しを削除AcceptChanges():

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

MSDNによると

この DataSet がロードされてから、または最後に AcceptChanges が呼び出されてから、この DataSet に対して行われたすべての変更をコミットします。

つまり、新しく追加された行を としてマークしnot newます。

于 2010-12-13T11:02:49.070 に答える