2015-10-10 49 views
-4

我只是試圖做一個簡單的數據庫更新,我得到一個異常,我不明白。ExecuteNonQuery拋出invalidCastException

這裏是代碼 - 幫助請:

protected void btnmodif_Click(object sender, EventArgs e) 
{ 
    SqlConnection sqlConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["AGENDAConnectionString2"].ConnectionString); 

    SqlCommand sqlComm = new SqlCommand(); 
    sqlComm = sqlConn.CreateCommand(); 

    sqlComm.CommandText = @"UPDATE RDV SET STATUES_COM = @STAT_COM WHERE INDICE = @ind"; 

    sqlComm.Parameters.Add("@STAT_COM", SqlDbType.VarChar); 
    sqlComm.Parameters["@STAT_COM"].Value = DropDownList1.SelectedItem.Text; 

    sqlComm.Parameters.Add("@ind", SqlDbType.VarChar); 
    sqlComm.Parameters["@ind"].Value = Request.QueryString["Champ"].ToString(); 

    sqlConn.Open(); 
    sqlComm.ExecuteNonQuery(); 
    sqlConn.Close(); 

    Response.Write(@"<script language='javascript'>alert('SUCCESS');</script>"); 
} 

我更新的代碼

+3

那麼什麼是例外更換你的代碼?總是提供完整的異常詳細信息(堆棧跟蹤,消息,嵌套異常)。 –

+3

但是除此之外,你不應該在引號中使用參數 - 例如,你想要'SET STATUES_COM = @ STAT_CONM WHERE INDICE = @ ind'。另外,'Parameters.Add'返回參數,所以你可以使用'sqlComm.Parameters.Add(「@ ind」,SqlDbType.VarChar).Value = Request.QueryString [...];' - 它使代碼這個方法簡單得多。 –

+1

使用調試器並告訴我們這裏的值是什麼'DropDownList1.SelectedItem',你應該捕獲'DropDownList1.SelectedItem.Text' – MethodMan

回答

1

您的按鈕單擊事件中與此

protected void btnmodif_Click(object sender, EventArgs e) 
{ 
    var wasSuccessful = UpDateDB(); 
    if(wasSuccessful) 
    { 
     //Do Something 
    } 
    else 
    { 
    //Do Something Else logging etc... 
    } 
} 

public static bool UpDateDB() 
{ 
    var ConnString = System.Configuration.ConfigurationManager.ConnectionStrings["AGENDAConnectionString2"].ConnectionString; 
    bool successful = false; 
    var ddlSelectedText = DropDownList1.SelectedItem.Text; 
    var strUpdate = "UPDATE RDV SET STATUES_COM = @STAT_COM WHERE INDICE = @ind"; 

    using (SqlConnection connection = new SqlConnection(ConnString)) 
    { 
     using (SqlCommand sqlComm = new SqlCommand(strUpdate, connection)) 
     { 
      sqlComm.CommandType = CommandType.Text; 
      sqlComm.Parameters.AddWithValue("@STAT_COM", ddlSelectedText); 
      sqlComm.Parameters.AddWithValue("@ind", (string)Request.QueryString["Champ"]); 
      sqlComm.CommandTimeout = 120; 
      sqlComm.Connection.Open(); 
      try 
      { 
       sqlComm.ExecuteNonQuery(); 
       successful = true; 
      } 
      catch(SqlException SqlEx) 
      { 
       successful = false; 
       //Write to a long SqlEx.Message 
      } 
     } 
    } 
    return successful; 
} 
+1

即時通訊這個@methot人ty –

+0

非常感謝你@Method Man,我必須刪除靜態 public static bool UpDateDB() 並更改此 (字符串)Request.QueryString [「Champ」] to this Request.QueryString [「Champ」] .ToString() 但它的工作,你是一種生活品味 –

相關問題