2009-06-17 1270 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(); 
相關問題