2016-03-22 17 views
-1
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
conn.Open(); 
var session_username = Session["user"]; 
string sql1 = "UPDATE Users SET email='" + newemail.Text + "' WHERE username = '" + session_username + "'"; 
SqlCommand cmd = new SqlCommand(sql1, conn); 
cmd.ExecuteNonQuery(); 
Response.Write("alert('DATA UPDATED')"); 

Verilerin güncellendiğini belirten iletiyi alıyorum. ancak sayfada bir hata yok. Birisi lütfen yardım edinASP.NET'deki SQL UPDATE sorgum çalışmıyor

+0

geçirilen oluyor? 0 satır güncelleniyor olabilir. –

+0

Evet. en az örneklem yap. İlgisiz olan her şeyi kaldırın. ASP..NET gibi - bu bir komut satırı uygulaması için aynıdır. Kötü şekilde formüle edilmiş bir soruyu gömmeye çalıştığınız verileri güncellerken önemsiz bir sorununuz var. Verilerin güncellenmediğini nasıl biliyorsunuz? – TomTom

+0

İlk önce cmd'yi atın ve sonra yürütmeyi deneyin. – Shadow

cevap

3

İlk olarak, Her zaman parametreli sorguları kullanın, aksi halde Sql injection saldırılarını riske atıyorsunuz.

İkincisi,, cmd.ExecuteNonQuery(); numaranızdan önce çağrılır. Bir istisna almalısın.

Üçüncü olarak, Dispose() numaralı telefonu aramamalısınız, IDisposable nesnesini using deyimine sarmalısınız.

Kodunuz daha bu gibi görünmelidir: session_username değeri ne

using(var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) 
{ 
    conn.Open(); 
    var session_username = Session["user"]; 
    string sql1 = "UPDATE Users SET email= @email WHERE username = @UserName"; 
    using(var cmd = new SqlCommand(sql1, conn)) 
    { 
     cmd.Parameters.Add("@email", SqlDbType.NVarChar).Value = newemail.Text; 
     cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = session_username ; 
     cmd.ExecuteNonQuery(); 
     Response.Write("alert('DATA UPDATED')"); 
    } 
} 
+0

Özellikle, özellikle parametreler üzerinde. Ekleyebileceğim tek şey "dapper" ile bir "veya daha kolay" olurdu: 'conn.Execute (" UPDATE Kullanıcıları SET e-mail = @email WHERE kullanıcı adı = @UserName ", yeni {email = newemail.Text, UserName = Oturum [" user "]});' –

+0

@MarcGravell Teşekkürler! –