Question

Quelle est la meilleure méthode pour sauvegarder des milliers de lignes et, après avoir fait quelque chose, les mettre à jour.

Actuellement, j'utilise un datatable, le remplissant, après avoir inséré

MyDataAdapter.Update(MyDataTable)

Après quelques modifications sur MyDataTable, j’utilise à nouveau la méthode MyDataAdapter.Update (MyDataTable).

Modifier:

Je suis désolé de ne pas fournir plus d'informations.

Il peut y avoir jusqu'à 200 000 lignes qui seront créées à partir d'un fichier XML. Ces lignes seront sauvegardées dans la base de données. Après que, il y aura un processus pour chaque ligne. Et je devrai mettre à jour chaque ligne de la base de données.

Au lieu de mettre à jour ligne par ligne, j'ai décidé de mettre à jour le datatable et d'utiliser le même adaptateur de données pour mettre à jour les lignes.

C'est le meilleur de moi.

Je pense qu’il pourrait y avoir une approche plus intelligente.

Était-ce utile?

La solution

En réagissant à vos commentaires:

Un DataAdapter.Update() va mettre à jour (et insérer / supprimer) ligne par ligne. Si vous avez des changements individuels, il n'y a vraiment pas de moyen plus rapide. Si vous avez des modifications systématiques, comme SET Price = Price+ 2 WHERE SelByDate < '1/1/2010' vous ferez mieux d’exécuter un DbCommand sur la base de données.

Mais vous devriez peut-être vous soucier des transactions et de la gestion des erreurs avant l'exécution.

Autres conseils

Si je comprends bien, vous effectuez deux opérations distinctes: le chargement de lignes dans une base de données, puis la mise à jour de ces lignes.

Si les lignes que vous insérez proviennent d'une autre source de données prise en charge par ADO.NET, vous pouvez utiliser SqlBulkCopy pour insérer les lignes par lots, ce qui sera plus efficace que d'utiliser un datatable.

Une fois que les lignes sont dans la base de données, je suppose que vous feriez mieux d'exécuter une commande SQLC pour modifier leurs valeurs.

Si vous pouvez fournir plus de détails sur quoi et pourquoi vous posez la question, nous pourrons peut-être mieux adapter la réponse à cette question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top