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
Susan Sarandonoriginal
2025-01-14 22:56:48419parcourir

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>

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>

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>

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>

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!

Déclaration:
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