2012-01-02 33 views
5

我想在web配置文件中設置mysql連接。在web配置文件中連接字符串的問題

下面是連接字符串代碼:

<connectionStrings> 
    <add name="connstring" 
     connectionString="DRIVER={MySQL ODBC= 3.51=  Driver};Database=marctest;Server=localhost;UID=root;PWD=1234;" 
     providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

,我訪問它在接下來的步驟:

MySqlConnection connmysql = new MySqlConnection(WebConfigurationManager.ConnectionStrings["connstring"].ConnectionString); 

當我運行我的代碼,它會生成一個空引用異常「未將對象引用設置爲一個對象的實例。「

我該如何解決這個問題?

+0

爲什麼不使用MySql .Net連接器? http://dev.mysql.com/downloads/connector/net – Lloyd 2012-01-02 03:56:01

回答

7

如果您使用的是MySql .Net Connector那麼你的配置設置應類似於以下

<add name="connstring" connectionString="server=localhost;User Id=root;Persist Security Info=True;database=marctest;password=PASSWORD" providerName="MySql.Data.MySqlClient"/> 

那麼你的代碼看起來應該像。

using (MySqlConnection dbConn = new MySqlConnection(ConfigurationManager.ConnectionStrings["connstring"].ConnectionString)) 
{ 
    // Database work done here 
} 
+0

我正在使用類似的代碼,但問題仍未解決! – 2012-01-02 05:45:42

+0

「類似」或相同,因爲「connectionString」設置非常重要,如果不正確,連接將不會被初始化。檢查「connstring」的拼寫在配置文件和代碼中是相同的。 – Lloyd 2012-01-02 05:54:39

4

我想你有MySql Connector/Net API。更改ProviderName屬性並查看ConnectionStrings。它應該是MySql.Data.MySqlClient並使用System.Configuration.ConfigurationManager.ConnectionStrings集合。

+0

這已經完成,但仍然有相同的錯誤。任何其他方式來解決這個問題? – 2012-01-02 05:49:26

+0

你使用了什麼web.config?它是在根目錄還是在子目錄? – adatapost 2012-01-02 06:02:24

0

您應檢查以下第一:

ConfigurationManager.ConnectionStrings["connstring"].ConnectionString 

返回一個字符串,你可以用Response.Write寫入到輸出或使用調試器

看它,如果你已經通過上述步驟中的字符串,請查看您正在使用的類WebConfigurationManager是否已實例化且不爲空。

,如果你不從第1步得到的字符串,你可能在你的代碼文件夾中其他web.config這將是一個虛擬目錄,並可以覆蓋你的web.config

connectionStrings部分應該是內部configurationWeb.config文件,並應類似於以下

<configuration> 
    <connectionStrings> 
    <add name="connstring" connectionString="..." providerName="..." /> 
    </connectionStrings> 

    <appSettings> 
    ... 
    </appSettings> 
</configuration> 

嘗試從一個純粹的* .aspx頁面中讀取連接字符串,看看你是否可以先訪問它。

創建一個ASPX文件並粘貼下面的內容並從您的瀏覽器調用它。

<%@ Page Language="C#" %> 
<% 
Response.Write(ConfigurationManager.ConnectionStrings["DbConnection"].ConnectionString); 
%> 

如果你仍然無法讀取連接字符串,請編輯您的問題,並添加完整的web.config也類文件,您正試圖創建連接給我看看什麼可能出錯

+0

它不返回字符串值本身(拋出相同的錯誤)。 而我在我的Projects文件夾中找不到任何其他web.config文件。 任何其他方式,這可以解決?? – 2012-01-02 05:40:32

+0

我更新了我的答案,請讓我知道如果您仍然無法看到您的頁面中的連接字符串 – AaA 2012-01-02 06:54:06

+0

我懷疑你正在創建你的連接,而不是'System.Web.UI.Page'類,因此對象'ConfigurationManager'沒有自動實例化 – AaA 2012-01-02 07:10:07