System.NullReferenceException se produit lorsque vous utilisez l’objet CommandBuilder
Cet article vous aide à résoudre l’exception System.NullReferenceException
qui se produit lorsque vous utilisez l’objet CommandBuilder
.
Version d’origine du produit : Visual Basic .NET
Numéro de la base de connaissances d’origine : 310367
Symptômes
Si vous utilisez l’objet CommandBuilder
pour obtenir explicitement des commandes pour l’objet DataAdapter
comme suit :
da.InsertCommand = cb.GetInsertCommand
Ensuite, exécutez le code Visual Basic .NET suivant :
cb.DataAdapter = Nothing
Les commandes que vous ajoutez au DataAdapter
sont supprimées et le message d’erreur suivant s’affiche :
Une exception non prise en charge de type « System.NullReferenceException » s’est produite dans app_name.exe
Informations supplémentaires : La référence d’objet n’est pas définie sur un instance d’un objet.
Cause
CommandBuilder
supprime les commandes qu’il génère lorsqu’il est dissocié d’un DataAdapter.CommandBuilder
et DataAdapter
qu’ils sont liés ; lorsqu’ils sont dissociés ou dissociés, les commandes sont nulled. Ce problème n’affecte pas les commandes que vous générez depuis le début.
Résolution
Utilisez l’une des méthodes suivantes pour résoudre ce problème :
- Ne dissociez pas le
CommandBuilder
duDataSet
. - Générez les commandes vous-même, dans le code ou via Visual Data Tools.
Statut
Ce comportement est inhérent au produit.
Procédures pour reproduire le problème
Créez un projet d’application Windows Visual Basic .NET. Form1 est ajouté au projet par défaut.
Ajoutez un contrôle Button à Form1.
Basculez vers la vue Code et ajoutez le code suivant en haut de la fenêtre Code :
Imports System.Data.OleDb Imports System.Data.SqlClient
Ajoutez le code suivant à l’événement
Click
du Bouton :Dim con As New SqlConnection("server=myserver;uid=sa;pwd=mypassword;" & _ "database=northwind") Dim da As New SqlDataAdapter("Select * From Customers", con) Dim cb As New SqlCommandBuilder(da) Dim cmdInsert As New SqlCommand( _ "Insert Into Customer (CustomerID) Value ('AAAAA')", con) da.InsertCommand = cmdInsert da.UpdateCommand = cb.GetUpdateCommand da.DeleteCommand = cb.GetDeleteCommand Debug.WriteLine(da.InsertCommand.CommandText) Debug.WriteLine(da.DeleteCommand.CommandText) cb.DataAdapter = Nothing ' Comment out this line to avoid the error. cb = Nothing Debug.WriteLine(da.InsertCommand.CommandText) Debug.WriteLine(da.DeleteCommand.CommandText)'Error occurs here.
Modifiez votre chaîne de connexion en fonction de votre environnement.
Appuyez sur la touche F5 pour compiler et exécuter l’application.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour