2009-06-17 45 views
24

All'avvio dell'applicazione ricevo: La proprietà ConnectionString non è stata inizializzata.Come risolvere "La proprietà ConnectionString non è stata inizializzata"

web.config:

<connectionStrings> 
    <add name="MyDB" 
     connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" /> 
</connectionStrings> 

L'essere stack:

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 

Sono abbastanza nuovo per .NET e non ottengo questo. Ho trovato molte risposte su Google, ma nessuno ha risolto il problema.

Che cosa significa? Il mio web.config è cattivo? La mia funzione è cattiva? La mia configurazione SQL non funziona correttamente (sto usando sqlexpress)?

Il mio problema principale qui è che non sono sicuro da dove iniziare a eseguire il debug di questo ... tutto potrebbe essere d'aiuto.

EDIT:

codice Failling:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"], 
CommandType.Text, 
sqlQuery, 
sqlParams); 

sqlquery è una query come "select * from tabella". sqlParams non è rilevante qui.

L'altro problema qui è che la mia azienda utilizza MySQLHelper e non ho visibilità su di esso (solo una DLL per una lib di supporto). Ha funzionato bene in altri progetti, quindi sono al 99% che l'errore non viene da qui.

Immagino che se non c'è modo di eseguire il debug senza vedere il codice, dovrò aspettare per entrare in contatto con la persona che ha creato questo helper per ottenere il codice.

+1

È possibile pubblicare la stringa di connessione da webconfig e il codice in errore che la utilizza? – kscott

+0

aggiunto alcune informazioni – marcgg

risposta

27

Riferimenti la stringa di connessione dovrebbe essere fatto in quanto tale:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString, 
CommandType.Text, 
sqlQuery, 
sqlParams); 

ConfigurationManager.AppSettings["ConnectionString"] sarebbe cercando nella AppSettings per qualcosa chiamato ConnectionString, che non avrebbe trovato. Questo è il motivo per cui il tuo messaggio di errore indicava il "ConnectionString" property has not been initialized, perché sta cercando una proprietà inizializzata di AppSettings denominata ConnectionString.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString istruzioni per cercare la stringa di connessione denominata "MyDB".

Here is someone talking about using web.config connection strings

+0

L'ha risolto! È quello che sto facendo cattiva pratica? – marcgg

+0

Come intendete? Il modo in cui si stava tentando di fare riferimento alla stringa di connessione era errato, tuttavia se si stesse tentando di fare riferimento al valore di qualche nodo di AppSettings, sarebbe stato corretto. – kscott

+0

Intendevo, è così male ottenere la stringa di connessione in questo modo? – marcgg

15

Si ottiene questo errore quando un'origine dati tenta di collegarsi ai dati ma non può perché non riesce a trovare la stringa di connessione. Nella mia esperienza, questo di solito non è dovuto a un errore nel web.config (anche se non ne sono sicuro al 100%).

Se si assegna a livello di codice un'origine dati (ad esempio SqlDataSource) o si crea una query (ad esempio utilizzando una combinazione SqlConnection/SqlCommand), assicurarsi di aver assegnato un oggetto ConnectionString.

SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString; 

Se si sta agganciando un elemento databound a un'origine dati (cioè una GridView o ComboBox a uno SqlDataSource), assicurarsi che l'origine dati è assegnato a una delle tue stringhe di connessione.

Inserisci il tuo codice (per l'elemento del database e il web.config per sicurezza) e possiamo dare un'occhiata a questo.

EDIT: Penso che il problema è che si sta tentando di ottenere la stringa di connessione dall'area AppSettings e che a livello di codice non è dove esiste. Prova a sostituirlo con ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (se ConnectionString è il nome della stringa di connessione.)

+0

Ho aggiunto del codice, non sono sicuro se questo rende il mio problema più chiaro. – marcgg

+0

Non sono sicuro di ottenerlo, dovrei spostare la posizione della mia stringa di connessione in web.config? – marcgg

+0

non è in AppSettings btw – marcgg

3

La stringa di connessione è non in AppSettings.

Quello che stai cercando è in:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]... 
0

Usare [] invece di() come di seguito esempio.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString); 
      DataTable data = new DataTable(); 
      DataSet ds = new DataSet(); 
Problemi correlati