如何修复“ConnectionString 属性尚未初始化”
Posted
技术标签:
【中文标题】如何修复“ConnectionString 属性尚未初始化”【英文标题】:How to fix "The ConnectionString property has not been initialized" 【发布时间】:2010-11-03 17:08:36 【问题描述】:当我启动我的应用程序时,我得到: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)?
我的主要问题是我不知道从哪里开始调试...任何事情都会有所帮助。
编辑:
失败代码:
mysqlHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);
sqlQuery 是一个类似于“从表中选择 *”的查询。 sqlParams 在这里不相关。
这里的另一个问题是我的公司使用 MySQLHelper,我无法看到它(只有一个用于帮助程序库的 dll)。它在其他项目中一直运行良好,所以我 99% 的错误不是来自这里。
我想如果没有看到代码就无法调试它,我将不得不等待与创建此帮助程序的人取得联系以获取代码。
【问题讨论】:
你能发布来自 webconfig 的连接字符串,以及使用它的失败代码吗? 【参考方案1】:应该这样引用连接字符串:
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);
ConfigurationManager.AppSettings["ConnectionString"]
将在 AppSettings
中查找名为 ConnectionString
的东西,但它找不到。这就是为什么您的错误消息指示 "ConnectionString" property has not been initialized
,因为它正在寻找名为 ConnectionString
的 AppSettings
的初始化属性。
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString
指示查找名为“MyDB”的连接字符串。
Here is someone talking about using web.config connection strings
【讨论】:
【参考方案2】:当数据源尝试绑定数据但由于找不到连接字符串而无法绑定时,您会收到此错误。根据我的经验,这通常不是由于 web.config 中的错误(尽管我不能 100% 确定这一点)。
如果您以编程方式分配数据源(如 SqlDataSource)或创建查询(即使用 SqlConnection/SqlCommand 组合),请确保为它分配了 ConnectionString。
var connection = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString);
如果您要将数据绑定元素连接到数据源(即 GridView 或 ComboBox 到 SqlDataSource),请确保将数据源分配给您的连接字符串之一。
发布您的代码(以确保数据绑定元素和 web.config 的安全),我们可以查看它。
编辑:我认为问题在于您试图从 AppSettings 区域获取连接字符串,并且以编程方式不存在它。尝试将其替换为 ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
(如果 ConnectionString 是您的连接字符串的名称。)
【讨论】:
我不确定我是否得到它,我应该在 web.config 中移动我的连接字符串的位置吗? 它不在 AppSettings 中 不,没关系。只需更改 MySQLHelper 的代码即可获取连接字符串,就像我在编辑中所做的那样。 更改为 ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString 不起作用,但您已经接近了。 kscott 解决方案正在运行,我只需要使用 MyDB 字符串【参考方案3】:AppSettings中的连接字符串不是。
您要查找的内容在:
System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
【讨论】:
【参考方案4】:我在处理 web api Asp Net Core 项目时偶然发现了同样的问题。 我按照建议将代码中的引用更改为:
ConfigurationManager.ConnectionStrings["NameOfTheConnectionString"].ConnectionString
但添加对 System.Configuration.dll 的引用导致错误“引用无效或不受支持”。
为了解决这个问题,我必须使用 NuGet 下载包 System.Configuration.ConfigurationManager(工具 -> Nuget 包 -> 管理 Nuget 包以获取解决方案)
【讨论】:
【参考方案5】:我发现当我创建Sqlconnection = new SqlConnection()
时,
我忘了传递我的 connectionString
变量。所以这就是为什么我改变了我初始化connectionString
的方式(没有任何改变)。
如果你喜欢我,别忘了将你的字符串连接传递给SqlConnection
参数。
Sqlconnection = new SqlConnection("ConnString")
【讨论】:
【参考方案6】:这对我有用:
var oSQLConn = new
SqlConnection(
System.Configuration.ConfigurationManager.ConnectionStrings["Conn1"].ToString()
);
【讨论】:
【参考方案7】:如下例所示,使用 [] 代替 ()。
SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
DataTable data = new DataTable();
DataSet ds = new DataSet();
【讨论】:
【参考方案8】:仅在代码隐藏页面中使用:-
SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");
它应该可以正常工作
【讨论】:
这是不安全的;连接信息应放在您的 web.config 文件中,以便于更新和安全。以上是关于如何修复“ConnectionString 属性尚未初始化”的主要内容,如果未能解决你的问题,请参考以下文章