2016-06-16 1 views
0

J'essaie de transmettre certaines informations à une base de données Access, mais je ne suis pas sûr si j'utilise correctement ExecuteNonQuery(). Voici le code que je utilise:OleDbConnection - Toutes les informations ne sont pas transmises

public void WriteToDB(string connStr, string tblName) 
    { 
     string[] accounts = { "@ID", "@Date", "@Line Item", "@Ranking Item", "@Item Attribute", "@Current_Period_Ranking(b)" }; 

     OleDbConnection conn = new OleDbConnection(connStr); 
     conn.Open(); 
     OleDbCommand CmdSQL = new OleDbCommand(string.Format("Insert into [{0}] ([ID], [Date], [Line Item], [Ranking Item], [Ranking]) VALUES(?,?,?,?,?)",tblName),conn); 
     CmdSQL.Parameters.AddWithValue("@ID", 1); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Ranking"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Rank.GetLineItem(3)); 
     CmdSQL.ExecuteNonQuery(); 
     CmdSQL.Parameters.AddWithValue("@ID", 2); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Price"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Price); 
     CmdSQL.ExecuteNonQuery(); 
     CmdSQL.Parameters.AddWithValue("@ID", 3); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Pounds"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Pounds); 
     CmdSQL.ExecuteNonQuery(); 
     CmdSQL.Parameters.AddWithValue("@ID", 4); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Opportunity"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Opportunity); 
     CmdSQL.ExecuteNonQuery(); 
    } 

Quand je lance ce morceau de code, l'accès DB ne montre que les 1 de.

Répondre

3

Puisque vous utilisez la même commande, vous devez effacer les paramètres après:

CmdSQL.ExecuteNonQuery(); 
CmdSQL.Parameters.Clear(); 
CmdSQL.Parameters.AddWithValue("@ID", 4); 
.... 

Sur une note côté, les dates devraient être les dates dans une base de données, et non des chaînes. Votre base de données semble discutable si vous avez un tas de tables avec cette même structure. Pourquoi pas une seule table et un champ qui distingue le type de rangée. Cela rendrait vos requêtes plus faciles. Il est également très fréquent et avantageux de mettre ces objets de base de données jetables en utilisant des blocs.

+0

Egalement sur les dates: C'est une DLL externe que j'écris qui communiquera avec VBA, donc je vais passer les dates sous forme de chaînes et ensuite les charger en dates. Je n'ai pas encore fait le travail sur cette partie pour le moment. C'était juste s'assurer que la charge fonctionnait. Merci quand même pour vôtre aide! – jDave1984