如何修复“ConnectionString属性尚未初始化”
-
06-07-2019 - |
题
当我启动应用程序时,我得到: 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%认为错误不是来自这里。
我想如果没有看到代码就无法对其进行调整,我将不得不等待与创建此帮助程序的人联系以获取代码。
解决方案
引用连接字符串应该这样做:
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);
ConfigurationManager.AppSettings [&quot; ConnectionString&quot;]
将在 AppSettings
中查找名为 ConnectionString
的内容,它无法找到。这就是您的错误消息指示&quot; ConnectionString&quot;属性尚未初始化
,因为它正在寻找名为 ConnectionString
的 AppSettings
的初始化属性。
ConfigurationManager.ConnectionStrings [&quot; MyDB&quot;]。ConnectionString
指示查找名为“MyDB”的连接字符串。
其他提示
当数据源尝试绑定到数据但由于找不到连接字符串而无法绑定数据时,会出现此错误。根据我的经验,这通常不是由于web.config中的错误(尽管我不是100%肯定)。
如果您以编程方式分配数据源(例如SqlDataSource)或创建查询(即使用SqlConnection / SqlCommand组合),请确保为其分配了ConnectionString。
SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;
如果要将数据绑定元素连接到数据源(即GridView或ComboBox连接到SqlDataSource),请确保将数据源分配给其中一个连接字符串。
发布您的代码(对于数据绑定元素和web.config是安全的),我们可以看看它。
编辑:我认为问题在于您正在尝试从AppSettings区域获取连接字符串,并以编程方式获取它不存在的位置。尝试用 ConfigurationManager.ConnectionStrings [&quot; ConnectionString&quot;]替换它.ConnectionString
(如果ConnectionString是你的连接字符串的名称。)
AppSettings 中的连接字符串不。
您正在寻找的是:
System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
使用[]代替()如下例所示。
SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
DataTable data = new DataTable();
DataSet ds = new DataSet();
只需在Code Behind Page中使用: -
SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");
它应该工作得很好