2010-07-23 4 views
0

bon travail est-il possible de mettre à jour une base de données qui n'a pas de colonne de clé primaire avec un datagridview? (Dans un programme winform) j'utilise sql express 2008, et je veux Pour ce faire, utilisez l'approche du jeu de données. Cheersmettre à jour une base de données qui n'a pas une colonne PK

+4

Vous devez nous indiquer quel 'DataGridView' c'est (winform/webform/wpf/etc), et quelle approche vous utilisez pour l'accès aux données (' DataSet', LINQ-to-SQL, ADO.NET, EF, NHibernate, etc.). Mais finalement 'DataGridView' est un périphérique ** UI **, pas d'accès aux données. –

+0

seulement si le datagridview n'a pas de colonne de clé primaire aussi ... veuillez préciser votre question un peu mieux. – gsharp

Répondre

0

Sans trop savoir ce que vous faites exactement et comment vous parvenez à résoudre votre problème, la réponse est simple. Oui ...

Le datagridview dans le framework .Net permet de lier des objets exposant des propriétés publiques et implémentant des méthodes de sélection et de mise à jour personnalisées. Par conséquent, il vous permet d'implémenter votre propre méthode de mise à jour personnalisée si nécessaire et vous permet d'effectuer la mise à jour en fonction de n'importe quelle colonne de votre base de données sous-jacente.

+0

faites attention à mes amis, dans une application winform j'ai utilisé un datagridview lié à une table de certains db. dans ce dgv, l'utilisateur peut ajouter ou supprimer des lignes, ou simplement modifier une cellule, puis appuyez sur un bouton qui mettra à jour la base de données sous-jacente. certaines informations ont rempli le dgv et l'utilisateur peut modifier ce dgv rempli sous-jacente db n'a pas une colonne définie comme étant un pk, cela signifie que toutes les colonnes peuvent être modifiées. J'ai utilisé sqlcommandbuilder mais il dit que la commande select devrait retourner une colonne qui est pk. – samsam114

0

Vous avez toujours besoin d'une colonne unique ou d'une combinaison de colonnes pour différencier les différentes lignes que vous êtes sur le point de mettre à jour. À la fin de la journée, la DataLayer utilisée pour accéder aux données effectuera simplement une mise à jour/insertion sql ordinaire sur vos données. Juste pour vous avoir demandé mais votre modèle de données semble un peu cassé. Je veux dire qu'une clé primaire ou au moins une colonne unique serait préférable dans tous les cas.

0

Tout dépend de l'origine de vos données, qu'il s'agisse d'ensembles de données avec plain-old-sql, d'ORM (NHibernate ou Entity-Framework ou autre), de jeux de données typés, linq-2-sql.

En fonction de votre source de données, vous devrez peut-être introduire une clé primaire dans votre base de données. En fait, GridView ne s'en soucie pas, à la fin il affiche simplement une liste de données, et pour la grille, il n'y a pas de clé primaire. Cela ne concerne que la technique d'accès aux données afin de savoir quelle ligne mettre à jour.

Questions connexes