2013-03-21 21 views
11

Sto imparando a scrivere in un database da una casella di testo con il clic di un pulsante. Ho specificato la stringa di connessione al mio database NorthWind nel mio file web.config. Tuttavia non sono in grado di accedere alla stringa di connessione nel mio codice.Ottenere la stringa di connessione sql dal file web.config

Questo è quello che ho provato.

protected void buttontb_click(object sender, EventArgs e) 
{ 
    System.Configuration.Configuration rootwebconfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/Mohtisham"); 
    System.Configuration.ConnectionStringSettings constring; 
    constring = rootwebconfig.ConnectionStrings.ConnectionStrings["northwindconnect"]; 
    SqlConnection sql = new SqlConnection(constring); 

    sql.Open(); 
    SqlCommand comm = new SqlCommand("Insert into categories (categoryName) values ('" + tb_database.Text + "')", sql); 
    comm.ExecuteNonQuery(); 
    sql.Close(); 
} 

ottengo un errore di tooltip per

SqlConnection sql = new SqlConnection(constring); 

come

System.data.SqlClient.Sqlconnection.Sqlconnection (stringa) ha alcuni argomenti non validi.

voglio caricare la stringa di connessione dal web.config in constring

+2

Non è legato alla domanda, ma la scrittura in DB dalla casella di testo iniezione Cause SQL. – Popeye

+0

@Popeye E '? Che cosa suggerisci? Qual è un modo migliore per memorizzare i valori di input dell'utente in un database? –

+0

Basta cercare su google inoltre è possibile consultare questo http://www.mikesdotnetting.com/Article/113/Preventing-SQL-Injection-in-ASP.NET – Popeye

risposta

8

Questo perché la collezione ConnectionStrings è una raccolta di ConnectionStringSettings oggetti, ma il costruttore si aspetta un parametro SqlConnectionstring. Quindi non puoi semplicemente passare in constring da solo.

Prova questo.

SqlConnection sql = new SqlConnection(constring.ConnectionString); 
+0

lavorato. Grazie. –

4

provare questo

readonly SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["northwindconnect"].ToString()); 
0

io suggerisce di creare una funzione piuttosto che accedere direttamente al file web.config come seguire

public static string GetConfigurationValue(string pstrKey) 
    { 
     var configurationValue = ConfigurationManager.AppSettings[pstrKey]; 
     if (!string.IsNullOrWhiteSpace(configurationValue)) 
      return configurationValue; 

     throw (new ApplicationException(
      "Configuration Tag is missing web.config. It should contain <add key=\"" + pstrKey + "\" value=\"?\"/>")); 

    } 

E utilizzare questa funzione in te applicazione

9

Puoi semplicemente dare un Name al tuo ConnectionString in web.config del file e fare questo:

web.config:

<add name="ConnectionStringName" connectionString=YourServer"; Initial Catalog=YourDB; Integrated Security=True"/> 

Codice Dietro:

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ToString()); 
Problemi correlati