2009-06-17 111 views
24

当我开始我的应用程序时,得到:ConnectionString属性尚未初始化。如何解决“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表” 查询。 sqlParams在这里不相关。

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

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

+1

您可以发布webconfig中的连接字符串,以及使用它的失败代码? – kscott 2009-06-17 15:36:17

+0

添加了一些信息 – marcgg 2009-06-17 15:44:15

回答

27

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

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

15

当数据源尝试绑定到数据但是由于无法找到连接字符串而无法获得此错误时。根据我的经验,这通常不是由于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是连接字符串的名称。)

+0

我添加了一些代码,不知道它是否使我的问题更清晰。 – marcgg 2009-06-17 15:44:47

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(); 
相关问题