7

我有一个查询数据库的 Visual Studio 2012 ASP.NET MVC 应用程序。有人告诉我,将连接字符串保留在 web.config 文件中是一种很好的做法。调用的连接字符串ConnString位于:

  <connectionStrings>
      <add name="ConnString" connectionString="Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;"/>
  </connectionStrings>

在我想获取连接字符串的 C# 中,我使用:

String connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;

该应用程序在此行终止并引发以下异常:

Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object.

我已经包括:

using System.Configuration;

在页面顶部,但它仍然失败。我尝试使用using System.WebConfiguration,但我仍然无法获取字符串。我如何得到字符串?

4

3 回答 3

4

将您的 web.config 文件更改为包含providerName="System.Data.SqlClient"在连接字符串中的属性,如下所示:

  <connectionStrings>
      <add name="ConnString" connectionString="Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>
于 2013-07-08T14:31:24.857 回答
1

您错过了添加providerName="System.Data.SqlClient"连接字符串。

将您的连接字符串更改为:

  <connectionStrings>
          <add name="ConnString" connectionString="Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;" providerName="System.Data.SqlClient" />
      </connectionStrings>

问候

于 2013-07-08T14:32:55.030 回答
1

我没有什么新东西可以回答这个问题,但我想给出一些解释,

 System.Data.SqlClient 

其用于 SQL Server 的 .NET Framework 数据提供程序。在 web.config 中,您应该将 System.Data.SqlClient 作为 providerName 属性的值。它是您正在使用的 .NET Framework 数据提供程序。

如果您必须将您的应用程序与 MYSql 连接,那么您可以使用

  MySql .Net Connector

它是必需的,但在您的情况下它丢失了,这就是您收到错误消息的原因。

你可以阅读更多关于(在这里)[http://msdn.microsoft.com/en-US/library/htw9h4z3(v=VS.80).aspx] 希望它能让你更好地理解你犯了什么错误和你哟修复它。

 <configuration>
  <connectionStrings>
    <add name="Northwind"
         connectionString="Data Source=Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;" 
         providerName="System.Data.SqlClient" />
   </connectionStrings>
 </configuration>
于 2013-07-08T14:39:35.020 回答