我想使用的SqlCommand更新的MSSQL表,我認爲這是我的T-SQL語法錯誤,但這裏是我到目前爲止有:C#更新表使用SqlCommand.Parameters
SqlCommand sqlCmd = new SqlCommand("UPDATE yak_tickets SET email = @emailParam, subject = @subjectParam, text = @textParam, statusid = @statusIDParam, ticketClass = @ticketClassParam WHERE id = @ticketIDParam", sqlConn);
這些參數正常工作,但是,當我運行代碼時,該表永遠不會更新。任何幫助,將不勝感激=)
這裏是代碼的其餘部分:
#region Parameters
/* Parameters */
sqlCmd.Parameters.Add("@ticketIDParam", SqlDbType.BigInt);
sqlCmd.Parameters["@ticketIDParam"].Value = ticketID;
sqlCmd.Parameters.Add("@emailParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@emailParam"].Value = ticketToBeSubmitted.getEmail();
sqlCmd.Parameters.Add("@subjectParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@subjectParam"].Value = ticketToBeSubmitted.getSubject();
sqlCmd.Parameters.Add("@textParam", SqlDbType.Text);
sqlCmd.Parameters["@textParam"].Value = ticketToBeSubmitted.getTicketContent();
sqlCmd.Parameters.Add("@statusIDParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@statusIDParam"].Value = ticketToBeSubmitted.getStatus();
sqlCmd.Parameters.Add("@ticketClassParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@ticketClassParam"].Value = ticketToBeSubmitted.getTicketClass();
#endregion
#region Try/Catch/Finally
/* Try/Catch/Finally */
try
{
sqlConn.Open();
sqlCmd.ExecuteNonQuery();
}
catch (SqlException sqlEx)
{
sqlErrorLabel.Text = sqlEx.ToString();
sqlErrorLabel.ForeColor = System.Drawing.Color.Red;
}
finally
{
sqlConn.Close();
}
而且方法的簽名:
public static void updateTicketInDatabase(Ticket ticketToBeSubmitted, Label sqlErrorLabel, int ticketID)
它可能是一個愚蠢的問題,但你分配你的SQL命令到你的SQL連接? sqlCommand.Connection = sqlConn;我通常在構建sqlCommand = new SqlCommand(sqlConn);如果你沒有,我會認爲它會拋出一個錯誤。 – GrayWizardx 2009-12-19 23:23:46
是的,我使用的構造函數在最後。 – skylerl 2009-12-19 23:29:59
你實際上是在你的db中使用NVArchar字段嗎?或者只是varchar? – GrayWizardx 2009-12-19 23:42:06