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

问题描述 投票:31回答:5

当我启动我的应用程序时,我得到: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%认为错误不是来自这里。

我想如果没有看到代码就无法调试它,我将不得不等待与创建此帮助程序的人联系以获取代码。

c# asp.net connection-string database-connection
5个回答
28
投票

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

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

ConfigurationManager.AppSettings["ConnectionString"]将在AppSettings寻找名为ConnectionString的东西,它找不到它。这就是为什么你的错误消息指示"ConnectionString" property has not been initialized,因为它正在寻找AppSettings的初始化属性,名为ConnectionString

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString指示查找名为“MyDB”的连接字符串。

Here is someone talking about using web.config connection strings


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是连接字符串的名称。)


3
投票

连接字符串不在AppSettings中。

您正在寻找的是:

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

0
投票

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

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

0
投票

只需在Code Behind Page中使用: -

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

它应该工作得很好

© www.soinside.com 2019 - 2024. All rights reserved.