首頁 >後端開發 >C++ >從 App.config 檢索連接字串時如何避免「物件引用未設定到物件的實例」?

從 App.config 檢索連接字串時如何避免「物件引用未設定到物件的實例」?

Susan Sarandon
Susan Sarandon原創
2025-01-14 22:56:48349瀏覽

How to Avoid

從 App.config 存取連接字串:避免 NullReferenceExceptions

從 App.config 檔案中檢索連接字串需要仔細處理,以防止 NullReferenceException 錯誤。 考慮以下程式碼範例:

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

此程式碼片段與標準 App.config 檔案一起使用時,如下所示:

<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>
如果找不到連接字串“Test”,

可以拋出NullReferenceException。 問題在於直接存取.ConnectionString而不檢查null。

一個強大的解決方案包括在存取其屬性之前驗證連接字串是否存在:

<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>

或者,可以採用使用空白條件運算子 (?.) 的更簡潔的方法:

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

如果缺少“Test”,這將透過將 connection 設為 null 來優雅地處理 null 情況。 請記住在這種情況下添加適當的錯誤處理。

最後,請記住在您的專案中包含對 System.Configuration.dll 的引用。該組件提供了存取配置設定所需的類別。 如果沒有這個引用,編譯將會失敗。

以上是從 App.config 檢索連接字串時如何避免「物件引用未設定到物件的實例」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn