2013-03-21 14 views
11

Uczę się pisać w bazie danych z pola tekstowego za pomocą kliknięcia przycisku. Podałem ciąg połączenia z moją bazą danych NorthWind w moim pliku web.config. Jednak nie mam dostępu do ciągu połączenia w moim kodzie.Uzyskiwanie łańcucha połączenia sql z pliku web.config

Oto, co próbowałem.

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

pojawia się błąd Etykietka

SqlConnection sql = new SqlConnection(constring); 

jak

System.data.SqlClient.Sqlconnection.Sqlconnection (string) ma pewne nieprawidłowe argumenty.

Chcę załadować ciąg połączenia z web.config w constring

+2

To nie jest związane z pytanie, ale pisanie w DB z wtryskiem przyczyną sql polu tekstowym. – Popeye

+0

@Popeye Czy to prawda? Co sugerujesz? Który jest lepszy sposób na przechowywanie danych wejściowych użytkownika w bazie danych? –

+0

Wystarczy wyszukać w google, możesz również odnieść się do tego http://www.mikesdotnetting.com/Article/113/Preventing-SQL-Injection-in-ASP.NET – Popeye

Odpowiedz

8

To dlatego, że kolekcja ConnectionStrings jest zbiorem ConnectionStringSettings obiektów, ale konstruktor SqlConnection oczekuje parametr string. Więc nie możesz po prostu przekazać w sobie samej constring.

Spróbuj tego zamiast tego.

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

Pracował. Dzięki. –

4

spróbować

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

będę sugeruje utworzenie funkcji zamiast bezpośredniego dostępu do pliku web.config jak postępować

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=\"?\"/>")); 

    } 

i używać tej funkcji w was aplikacji

9

Możesz po prostu dać Name do ConnectionString w web.config plik i to zrobić:

web.config:

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

Code Behind:

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ToString()); 
Powiązane problemy