2017-05-17 2 views
0

J'ai un formulaire simple avec DataGridView qui utilise DataSet s DataTable comme source de données. Je dois enregistrer les données ajoutées, modifiées ou supprimées dans la base de données DataGridView. Cependant, il y a un hic. Je n'ai pas toutes les informations de base de données codées en dur. Au lieu de cela, l'utilisateur l'entre au moment de l'exécution. J'essayais d'utiliser SqlCommandBuilder, mais il semble que la base de données doive avoir un identifiant unique pour fonctionner. Y a-t-il un autre moyen de contourner? Ou dois-je limiter l'utilisateur à utiliser uniquement des bases de données avec des identifiants uniques? Et même alors, dois-je écrire des commandes personnalisées pour insérer/supprimer/mettre à jour? Ou les méthodes standard fonctionneront?Comment enregistrer les données modifiées dans datagridview vers une base de données?

+0

__N'appelle pas un 'DataGridView'a' GridView' ou un 'DataGrid' et vice versa !! C'est faux et déroutant car ce sont des contrôles différents. Appelez toujours les choses par leur nom __right__! - _ .. il semble que la base de données doit avoir un identifiant unique pour que cela fonctionne. Un SGBD appellera toujours un identifiant unique. Sinon, comment cela pourrait-il fonctionner? Comment pourrait-il autrement __identifier__ les rangées ??? Une table sans design est terriblement mauvaise. – TaW

+0

@TaW a édité le titre, merci – 7Y3RPXK3ETDCNRDD

+0

Une autre règle qu'un SGBD doit suivre est qu'il doit fournir des tables ('systables') avec des informations système complètes. Vous serez en mesure de les interroger et de trouver tout ce dont vous avez besoin de types à des touches, fks, vues, etc. – TaW

Répondre

0

Je ne suis pas tout à fait sûr où vous allez avec votre application, donc je peux être un peu de base avec quelques détails ci-dessous, mais n'hésitez pas à laisser des commentaires et je vais essayer de restructurer la réponse si je suis hors base. Tout d'abord, si vous créez une application de n'importe quelle taille, pensez à utiliser WPF plutôt que des WinForms. Il fournit beaucoup plus de puissance et de flexibilité et est recommandé par rapport aux winforms. Si vous utilisez WPF, alors vous devriez jeter un oeil à la MVVM pattern pour suivre vos données.

Pour autant que l'utilisateur choisisse une base de données lors de l'exécution. Avez-vous un ensemble fini de bases de données auxquelles vous pouvez vous connecter? Si c'est le cas, vous pouvez définir les détails de la connexion derrière les scènes et laisser l'utilisateur sélectionner dans une liste déroulante la connexion qu'il souhaite utiliser.

Pour lire/écrire dans une base de données, je recommande d'utiliser le Entity Framework.