Je souhaite insérer une ligne dans la base de données à l'aide de SqlDataAdapter. J'ai 2 tables (Custormers & Commandes) dans la base de données CustomerOrders et a plus de milliers d'enregistrements. Je veux créer une interface graphique (TextBoxes) pour ajouter de nouvelles commandes client & dans la base de données à leurs tables respectives.Utilisation de SqlDataAdapter pour insérer une ligne
- Comment dois-je faire?
Je suppose que la méthode qui est habituellement suivi est
dataAdapter = new SqlDataAdapter (sqlQuery, conn);
dataSet = new DataSet();
da.Fill(dataSet);
Maintenant, prenez les valeurs de textboxes (ou utilisez DataBinding) pour ajouter une nouvelle ligne dans le DataSet et appelez
da.Update(dataSet);
Mais la question est: Pourquoi devrais-je récupérer tous les autres enregistrements dans dataSet en utilisant da.Fill (dataSet) en premier lieu? Je veux juste ajouter un seul nouvel enregistrement. Pour ce faire, je crée le schéma de la base de données dans le DataSet. comme ceci:
DataSet customerOrders = new DataSet("CustomerOrders");
DataTable customers = customerOrders.Tables.Add("Customers");
DataTable orders = customerOrders.Tables.Add("Orders");
customers.Columns.Add("CustomerID", Type.GetType("System.Int32"));
customers.Columns.Add("FirstName", Type.GetType("System.String"));
customers.Columns.Add("LastName", Type.GetType("System.String"));
customers.Columns.Add("Phone", Type.GetType("System.String"));
customers.Columns.Add("Email", Type.GetType("System.String"));
orders.Columns.Add("CustomerID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderAmount", Type.GetType("System.Double"));
orders.Columns.Add("OrderDate", Type.GetType("System.DateTime"));
customerOrders.Relations.Add("Cust_Order_Rel", customerOrders.Tables["Customers"].Columns["CustomerID"], customerOrders.Tables["Orders"].Columns["CustomerID"]);
J'ai utilisé DataBinding pour lier ces colonnes aux zones de texte respectives. Maintenant, je suis confus! Que devrais-je faire ensuite? Comment utiliser la commande Insérer? Parce que je n'ai pas donné de dataAdapter.SelectCommand afin que dataAdapter.Update() ne fonctionne pas, je suppose. Veuillez suggérer une approche correcte
Que "OERE 0 = 1" était une bouée de sauvetage. (Chargement d'une table de médias de 2 Go en mémoire ... soupir ..) – pkExec
Je m'intéressais à la ligne 'new SqlCommandBuilder (dataAdapter);' - cela rend un peu de magie, donc je n'ai pas besoin de script l'ensemble de l'INSERT déclarations. Merci! –
dataSet.Tables ["Customers"]. Add (newRow); ne compile pas. "System.Data.DataTable ne contient pas de définition pour 'Ajouter'". Voulez-vous dire dataSet.Tables [tableName] .Rows.Add (newRow) ;? –