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

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

Susan Sarandon
發布: 2025-01-14 22:56:48
原創
343 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板