Web配置文件中的连接字符串问题

时间:2012-01-02 03:48:39

标签: c# mysql web-services

我正在尝试在Web配置文件中设置mysql连接。

这是连接字符串代码:

    <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);

当我运行我的代码时,它会生成一个空引用异常。“对象引用未设置为对象的实例。”

如何解决此问题?

3 个答案:

答案 0 :(得分:8)

如果您使用的是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 
}

答案 1 :(得分:4)

我认为你有MySql Connector / Net API。更改ProviderName属性并查看ConnectionStrings。它应为MySql.Data.MySqlClient并使用System.Configuration.ConfigurationManager.ConnectionStrings集合。

答案 2 :(得分:0)

您应首先检查以下内容:

ConfigurationManager.ConnectionStrings["connstring"].ConnectionString

返回一个字符串,您可以使用Response.Write将其写入输出或使用调试器查看

如果您有上述步骤中的字符串,请检查您正在使用的类WebConfigurationManager是否已实例化且不为空。

如果你没有从第一步获得字符串,你的代码文件夹中可能有另一个web.config,它可能是一个虚拟目录,可能会覆盖你的web.config

您的connectionStrings部分应位于configuration文件的Web.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以及您尝试为我创建连接的类文件,以查看可能出现的问题