2010-12-13 52 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); 

c'est le code que j'utilise. Comme vous pouvez le voir, j'ai une table de paradoxe. et un peu comment résultat = 0 à la fin de tout cela. des idées quelle est mon erreur?Impossible d'insérer une ligne dans une table à l'aide de OleDBAdapter

merci d'avance.

- = Noam = -

Répondre

0

Quel est votre InsertCommand?

Essayez également après avoir enlevé ces lignes

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

si vous appelez AcceptChanges tous les changements dans la datatable est acceptée donc il n'y a aucune ligne qui est changé donc il n'y a rien à mettre à jour

+0

la commande d'insertion: INSERT INTO Véhicules (numéro de véhicule, de véhicule, distance parcourue, heures de fonctionnement, numéro de série du camion n ° 1, numéro de série du camion n ° 2, numéro de série du camion n ° 3). ,?,?,?) et après avoir enlevé ces 2 lignes j'obtiens une exception de syntaxe. – Bjorkson

+0

Pouvez-vous publier l'exception? – TalentTuner

+0

Erreur de syntaxe dans l'instruction INSERT INTO. Pas très instructif. J'ai demandé befor et j'ai eu des replays sur les caractères spéciaux pour la table forparadox besoin d'être avec ("") mais quand j'ai essayé avec sql comman j'ai eu d'autres problèmes: http://stackoverflow.com/questions/4366988/problem- with-insert-query-to-paradox-table-using-c – Bjorkson

0

Supprimer appel à AcceptChanges() :

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

According to MSDN:

engage toutes les modifications apportées à ce DataSet depuis qu'il a été chargé ou depuis les derniers AcceptChanges temps était appelé.

Signifie que la ligne nouvellement ajoutée est not new.