簡體   English   中英

升級DB后的C#ASP.NET TSQL代碼

[英]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");
  1. 添加了輸入驗證,會話值可以為null,最好在更新數據庫之前進行檢查
  2. 創建SqlCommand您可以指定連接,而無需再次設置
  3. 確保您的SQL有效
  4. 對諸如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM