2013-03-21 28 views
11

Tek bir tuş ile bir metin kutusundan veritabanına yazmayı öğreniyorum. Bağlantı dizesini web.config dosyamdaki NorthWind veritabanına belirledim. Ancak kodumun arkasındaki bağlantı dizesine erişemiyorum.Web.config dosyasından sql bağlantı dizesi alınıyor

Denediğim şey budur.

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

Ben

System.data.SqlClient.Sqlconnection.Sqlconnection (dize) olarak

SqlConnection sql = new SqlConnection(constring); 

için bir araç ipucu hatası alıyorum bazı geçersiz bağımsız değişken var.

Ben constringConnectionStrings toplama ConnectionStringSettings nesneler topluluğudur çünkü var

+2

sorgulamaya ancak metin kutusu neden sql enjeksiyonu gelen veritabanına yazma. – Popeye

+0

@Popeye Bu mu? Sen ne önerirsin? Kullanıcı giriş değerlerini bir veritabanında saklamanın daha iyi bir yolu hangisidir? –

+0

Sadece google'da arama yapmak için http://www.mikesdotnetting.com/Article/113/Preventing-SQL-Injection-in-ASP.NET – Popeye

cevap

8

yılında web.config gelen bağlantı dizesini yüklemek istiyorum ama SqlConnection yapıcı bir string parametre alır. Yani, kendi başına constring'u geçemezsiniz.

Bunun yerine bunu deneyin.

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

Çalışıyor. Teşekkürler. –

4

bu

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

I will Eğer

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

    } 

izleyin ve uygulamayı

bu işlevi kullanın doğrudan web.config dosyasına erişmek yerine bir işlevi oluşturmak için önermektedir deneyin
9

Name ürününü ConnectionString ürününe 012 içinde verebilirsiniz.dosyası ve bunu:

web.config: Arkasında

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

Kodu: O ilişkili değildir

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ToString()); 
İlgili konular