>백엔드 개발 >C++ >App.config에서 연결 문자열을 검색할 때 '개체 참조가 개체의 인스턴스로 설정되지 않음'을 방지하는 방법은 무엇입니까?

App.config에서 연결 문자열을 검색할 때 '개체 참조가 개체의 인스턴스로 설정되지 않음'을 방지하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-14 22:56:48345검색

How to Avoid

App.config에서 연결 문자열 액세스: NullReferenceException 방지

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을 던질 수 있습니다. 문제는 null을 확인하지 않고 .ConnectionString에 직접 접근하는 데 있습니다.

강력한 솔루션에는 해당 속성에 액세스하기 전에 연결 문자열의 존재를 확인하는 것이 포함됩니다.

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

또는 null 조건부 연산자(?.)를 사용하여 보다 간결한 접근 방식을 사용할 수 있습니다.

<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으로 문의하세요.