[英]C# ASP.NET TSQL Code Behind Upgrade DB
我正在嘗試從用戶輸入升級數據庫,但是它不起作用...
我正在使用這個:
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
SqlCommand ncmd = new SqlCommand("Update Utenti Set Nome = @vnome where [Indirizzo E-Mail]=@vem", con);
ncmd.Parameters.AddWithValue("@vem", Session["[Indirizzo E-Mail]"].ToString());
ncmd.Parameters.AddWithValue("@vnome", TextBox2.Text);
ncmd.Connection = con;
con.Open();
ncmd.ExecuteNonQuery();
con.Close();
Label2.Text = "Dati aggiornati con successo!";
Response.Redirect("~/ModificaDati.aspx");
}
當我單擊按鈕時,它顯示了Label2文本,但是在數據庫中“ Nome”沒有更改,為什么? 之前感謝您的回答^^
我將如下更改您的方法
if (Session["[Indirizzo E-Mail]"] != null &&
!string.IsNullOrEmpty(Session["[Indirizzo E-Mail]"].ToString()) &&
!string.IsNullOrEmpty(TextBox2.Text))
{
string vem = Session["[Indirizzo E-Mail]"].ToString();
using (var con = new SqlConnection(strcon))
using (var ncmd = new SqlCommand("Update Utenti Set Nome = @vnome where [Indirizzo E-Mail]=@vem", con))
{
con.Open();
ncmd.Parameters.AddWithValue("@vem", vem);
ncmd.Parameters.AddWithValue("@vnome", TextBox2.Text);
int rows = ncmd.ExecuteNonQuery();
Label2.Text = rows + " Dati aggiornati con successo!";
}
}
Response.Redirect("~/ModificaDati.aspx");
SqlCommand
您可以指定連接,而無需再次設置 SqlConnection, SqlCommand
類的一次性對象使用using
語句 您的代碼看起來還可以。 只要確保檢查SQL是否正確(如Damith所建議的那樣)即可。
我建議的另一件事是,在執行查詢之前,還要對數據類型正確性的參數進行驗證。 使用這種方法,您可能會避免很多不必要的異常,並且還能夠提供更加用戶友好的消息。 當然,這僅適用於用戶輸入非文本類型的情況
//Data Type verification
DateTime tmp;
if (!DateTime.TryParse(Label2.Text.Trim(), out tmp))
{
//Show error message that this is not a correct data type
}
首先打開您的連接
con.Open();
ncmd.Connection = con;
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.