如何修复“ConnectionString属性尚未初始化”

时间:2009-06-17 15:30:34

标签: c# asp.net connection-string database-connection

当我启动应用程序时,我得到: ConnectionString属性尚未初始化。

的Web.config:

<connectionStrings>
    <add name="MyDB"
         connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" />
</connectionStrings>

堆栈是:

System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643
System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122

我是.NET的新手,我不懂这个。我在Google上找到了很多答案,但没有一个能解决我的问题。

这是什么意思?我的web.config坏了吗?我的功能不好吗?我的SQL配置无法正常工作(我正在使用sqlexpress)?

我的主要问题是我不知道从哪里开始调试......任何事情都会有所帮助。

编辑:

Failling代码:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);

sqlQuery是一个类似“select * from table”的查询。 sqlParams与此无关。

这里的另一个问题是我的公司使用MySQLHelper,我对它没有可见性(只有一个帮助器lib的dll)。它在其他项目中运行良好,所以我99%认为错误不是来自这里。

我想如果在没有看到代码的情况下无法对其进行调整,我将不得不等待与创建此帮助程序的人联系以获取代码。

7 个答案:

答案 0 :(得分:28)

引用连接字符串应该这样做:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);

ConfigurationManager.AppSettings["ConnectionString"]会在AppSettings中查找名称为ConnectionString的内容,而这些内容无法找到。这就是您的错误消息指示"ConnectionString" property has not been initialized的原因,因为它正在查找名为AppSettings的{​​{1}}的初始化属性。

ConnectionString指示查找名为“MyDB”的连接字符串。

Here is someone talking about using web.config connection strings

答案 1 :(得分:16)

当数据源尝试绑定到数据但由于找不到连接字符串而无法绑定数据时,会出现此错误。根据我的经验,这通常不是由于web.config中的错误(尽管我不是100%肯定)。

如果您以编程方式分配数据源(例如SqlDataSource)或创建查询(即使用SqlConnection / SqlCommand组合),请确保为其分配了ConnectionString。

SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;

如果要将数据绑定元素连接到数据源(即GridView或ComboBox连接到SqlDataSource),请确保将数据源分配给其中一个连接字符串。

发布您的代码(对于数据绑定元素和web.config是安全的),我们可以看看它。

编辑:我认为问题在于您正在尝试从AppSettings区域获取连接字符串,并以编程方式获取它不存在的位置。尝试用ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString替换它(如果ConnectionString是连接字符串的名称。)

答案 2 :(得分:3)

AppSettings 中的连接字符串

您正在寻找的是:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...

答案 3 :(得分:0)

使用[]代替()如下例所示。

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();

答案 4 :(得分:0)

仅在代码隐藏页中使用:-

SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");

应该可以正常工作

答案 5 :(得分:0)

在研究Web API Asp Net Core项目时,我偶然遇到了同样的问题。 我按照建议将代码中的引用更改为:

ConfigurationManager.ConnectionStrings["NameOfTheConnectionString"].ConnectionString

但是在System.Configuration.dll中添加引用会导致错误“引用无效或不受支持”。

Configuration manager error

要解决此问题,我必须使用NuGet下载软件包System.Configuration.ConfigurationManager(工具-> Nuget软件包->管理该解决方案的Nuget软件包)

答案 6 :(得分:0)

我发现当我创建 Sqlconnection = new SqlConnection() 时, 我忘了传递我的 connectionString 变量。所以这就是为什么我改变了我初始化 connectionString 的方式(没有任何改变)。

如果您喜欢我,请不要忘记将您的字符串连接传递到 SqlConnection 参数中。

Sqlconnection = new SqlConnection("ConnString")