2012-01-02 8 views
5

Estoy tratando de establecer la conexión mysql en el archivo de configuración web.Problema con la cadena de conexión en el archivo de configuración web

Aquí es el código de cadena de conexión:

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

y estoy accediendo a ella en los siguientes pasos:.

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

Cuando ejecuto mi código se genera una excepción de referencia nula "No Referencia a objeto establecer a una instancia de un objeto ".

¿Cómo puedo resolver este problema?

+0

¿Por qué no utiliza el conector MySql .Net? http://dev.mysql.com/downloads/connector/net – Lloyd

Respuesta

7

Si está utilizando el MySql .Net Connector entonces su valor de configuración debe ser similar a la siguiente

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

a continuación, el código debe ser similar.

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

Estoy usando una tipo de código similar, pero el problema aún no se ha resuelto. –

+0

"Similar" o lo mismo, ya que la configuración "connectionString" es muy importante; si es incorrecta, la conexión no se inicializará. Compruebe que la ortografía de "connstring" sea la misma en el archivo de configuración y en el código. – Lloyd

4

Creo que tiene MySql Connector/Net API. Cambie el atributo ProviderName y eche un vistazo al ConnectionStrings. Debe ser MySql.Data.MySqlClient y usar la colección System.Configuration.ConfigurationManager.ConnectionStrings.

+0

Esto ya se ha hecho pero sigue teniendo el mismo error. ¿Alguna otra forma de resolver esto? –

+0

¿Qué web.config es utilizado por usted? ¿Está en la raíz o subdirectorio? – adatapost

0

Debe comprobar lo siguiente primero:

ConfigurationManager.ConnectionStrings["connstring"].ConnectionString 

devuelve una cadena, se puede escribir en la salida con Response.Write o mirarlo utilizando el depurador

si tiene la cadena de la etapa anterior , compruebe que la clase WebConfigurationManager que está utilizando está instanciada y no es nula.

si no obtiene cadena de la primera etapa, es posible que tenga otra web.config en su carpeta de código, lo que sería un directorio virtual y podría estar anulando su web.config

Su sección connectionStrings debe estar dentro de configurationWeb.config de archivo y debe ser similar después de

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

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

tratar de leer la cadena de conexión de una página * .ASPX puro y ver si se puede acceder a él en primer lugar.

crear un archivo ASPX y pegar siguiente en él y llamarlo desde su navegador.

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

si todavía no puede leer toda la cadena de conexión, por favor, edite su pregunta y añadir completa web.config y archivo de clase que usted está tratando de crear la conexión para que vea lo que podría ir mal

+0

No devuelve el valor de cadena en sí (arroja el mismo error). Y no encuentro ningún otro archivo web.config en mi carpeta Proyectos. ¿De otra manera esto se puede resolver? –

+0

Actualicé mi respuesta, por favor avíseme si todavía no puede ver la cadena de conexión en su página – AaA

+0

Sospecho que está creando su conexión de una clase que no sea 'System.Web.UI.Page' por lo que el objeto 'ConfigurationManager' no se crea automáticamente – AaA

Cuestiones relacionadas