首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板