Maison > développement back-end > C++ > Comment éviter « La référence d'objet n'est pas définie sur une instance d'un objet » lors de la récupération des chaînes de connexion à partir d'App.config ?

Comment éviter « La référence d'objet n'est pas définie sur une instance d'un objet » lors de la récupération des chaînes de connexion à partir d'App.config ?

Susan Sarandon
Libérer: 2025-01-14 22:56:48
original
401 Les gens l'ont consulté

How to Avoid

Accès aux chaînes de connexion depuis App.config : éviter les exceptions NullReferenceExceptions

La récupération des chaînes de connexion à partir de votre fichier App.config nécessite une manipulation minutieuse pour éviter NullReferenceException les erreurs. Considérez l'exemple de code suivant :

<code class="language-csharp">var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);</code>
Copier après la connexion

Cet extrait de code, lorsqu'il est utilisé avec un fichier App.config standard comme celui-ci :

<code class="language-xml"><?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" 
         name="Test" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration></code>
Copier après la connexion

peut lancer un NullReferenceException si la chaîne de connexion "Test" n'est pas trouvée. Le problème réside dans l'accès direct à .ConnectionString sans vérifier null.

Une solution robuste consiste à vérifier l'existence de la chaîne de connexion avant d'accéder à ses propriétés :

<code class="language-csharp">var connectionString = ConfigurationManager.ConnectionStrings["Test"];
if (connectionString != null)
{
    var connection = ConnectionFactory.GetConnection(connectionString.ConnectionString, DataBaseProvider);
    // ... use the connection ...
}
else
{
    // Handle the case where the connection string is not found.  
    // Log an error, throw an exception, or use a default connection.
}</code>
Copier après la connexion

Alternativement, une approche plus concise utilisant l'opérateur conditionnel nul (?.) peut être utilisée :

<code class="language-csharp">var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]?.ConnectionString, DataBaseProvider);</code>
Copier après la connexion

Cela gérera gracieusement le cas nul en définissant connection sur null si "Test" est manquant. N'oubliez pas d'ajouter une gestion des erreurs appropriée dans ce scénario.

Enfin, pensez à inclure une référence à System.Configuration.dll dans votre projet. Cet assembly fournit les classes nécessaires pour accéder aux paramètres de configuration. Sans cette référence, la compilation échouera.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal