Question : Questions de SQLCommandBuilder - de GetUpdateCommand, de GetInsertCommand et de GetDeleteCommand

Car je m'ai signalé en ma question précédente avoir un VB $$etAPP 2005 qui montre 3 champs d'une table de SQL-Serveur dans un DataGridView.  2 colonnes sont là mais non évidentes, y compris la clé primaire.  Tandis que le code ci-dessous « fonctionne » jusque investir les changements de la commande de DataGridView dans la base de données quand je clique le bouton de sauvegarde, je ne comprends pas pourquoi.  J'ai regardé le CommandText pour l'objet d'UpdateCommand produit par la méthode de GetUpdateCommand et tandis qu'elle était lisible, je ne pourrais pas dire qu'elle obtenait les paramètres peuplés.  Je ne pourrais pas également dire qu'elle insérerait ou supprimerait des disques mais c'a semblé class= les " lineNumbers " >
1 de >

    

'Avoué dans un module de « Globals » :
gdaMyDataAdapter public en tant que nouveau SqlDataAdapter
gdtMyDataTable public en tant que nouveau DataTable

'Peupler la grille…
PopulateGrid secondaire public ()

Faible sSQL comme corde
Faible NC en tant que nouveau SqlConnection (MyConnectionString)
NC. S'ouvrir ()

sSQL = « MyKey CHOISI, col1, col2, col3, OtherKey de MyTable OÙ OtherKey = 1234 »

Faible cmdSelect en tant que nouveau SqlCommand (sSQL, NC)
gdaMyDataAdapter.SelectCommand = cmdSelect

'Pas sure je dois faire ces derniers ici ou si elles sont en conflit avec ceux dans « sauf »
Faible MyCommandBuilder en tant que nouveau SqlCommandBuilder (gdaMyDataAdapter)
gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (vrais)

gdaMyDataAdapter.Fill (gdtMyDataTable)
MyDataGridView.DataSource = gdtMyDataTable

Sous-marin d'extrémité

'Sauf.  Appelé par un procédé d'événement de clic de bouton….

GridSave secondaire public ()

Faible MyCommandBuilder en tant que nouveau SqlCommandBuilder (gdaMyDataAdapter)

MyCommandBuilder.GetUpdateCommand ()

'En-dessous de deux appels semblent ne faire RIEN.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

'Comme essai, je pouvais dépasser le CommandText pour l'objet d'UpdateCommand du DataAdapter comme ceci :
gdaMyDataAdapter.UpdateCommand.CommandText = « des coups secs  »

iRows = gdaMyDataAdapter.Update (gdtMyDataTable)
gdtMyDataTable.AcceptChanges ()

Le class= >


I de l'extrémité Sub

Where que je vais est que j'ai l'ennui obtenir la mise à jour pour insérer n'importe quoi autre que la NULLE pour « OtherKey ».  MyKey est dans la table fondamentale car une colonne et lui d'identité est invisible dans la grille.  Je fais ajouter à l'utilisateur des rangées directement à la grille par des valeurs de dactylographie dans col1, col2 et col3.  J'ai « OtherKey » stocké dans une boîte à textes sur Form1.  Je voudrais faire obtenir « OtherKey » être invisible dans la grille et la valeur d'une variable qui a été placée de la boîte à textes.  N'importe comment je tords toute la MISE À JOUR que je semble pouvoir envoyer ma table est un NULL.

If je suis peu clair ou vous avez besoin de plus d'information, svp laissez-moi know.

Regards, le
Eric
class= de

Réponse : Questions de SQLCommandBuilder - de GetUpdateCommand, de GetInsertCommand et de GetDeleteCommand

Tout d'abord, cette ligne n'est pas nécessaire :

gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (vrai)

… qui est parce que le le SqlCommandBuilder prend le SelectCommand courant du DataAdapter qui lui est passé pour produire de l'InsertCommand, du DeleteCommand, et de l'UpdateCommand required.  Puisque le DataAdapter a été passé par la référence, les changements ont fait à l'intérieur du CommandBuilder sont maintenant évidents au reste du programme.

De même ce qui suit n'est pas nécessaire :

MyCommandBuilder.GetUpdateCommand ()

'En-dessous de deux appels sembler ne faire RIEN.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

… pour la même raison.  Vous passez le DataAdpater au constructeur du CommandBuilder, et toutes les commandes required sont automagically placées à l'intérieur du CommandBuilder.

Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us