使用SqlCommand.Parameters C#更新表 [英] C# Update Table using SqlCommand.Parameters
问题描述
在此输入代码
我试图更新使用的SqlCommand的MSSQL表,我觉得这是我的T-SQL语法错误,但这里是我有这么远:
的SqlCommand SQLCMD =新的SqlCommand(UPDATE yak_tickets设置电子邮件= @emailParam,主题= @subjectParam,文字= @textParam ,statusid = @statusIDParam,ticketClass = @ticketClassParam WHERE ID = @ticketIDParam,sqlConn);
的参数工作,因为他们应该,但是,表当我运行的代码永远不会被更新。任何帮助,将不胜感激=)
下面是代码的其余部分:
#地区的参数
/ * *参数/
sqlCmd.Parameters.Add(@ ticketIDParam,SqlDbType.BigInt);
sqlCmd.Parameters [@ ticketIDParam]值= ticketID。
sqlCmd.Parameters.Add(@ emailParam,SqlDbType.NVarChar);
sqlCmd.Parameters [@ emailParam]值= ticketToBeSubmitted.getEmail()。
sqlCmd.Parameters.Add(@ subjectParam,SqlDbType.NVarChar);
sqlCmd.Parameters [@ subjectParam]值= ticketToBeSubmitted.getSubject()。
sqlCmd.Parameters.Add(@ textParam,SqlDbType.Text);
sqlCmd.Parameters [@ textParam]值= ticketToBeSubmitted.getTicketContent()。
sqlCmd.Parameters.Add(@ statusIDParam,SqlDbType.NVarChar);
sqlCmd.Parameters [@ statusIDParam]值= ticketToBeSubmitted.getStatus()。
sqlCmd.Parameters.Add(@ ticketClassParam,SqlDbType.NVarChar);
sqlCmd.Parameters [@ ticketClassParam]值= ticketToBeSubmitted.getTicketClass()。
#endregion
#地区的try / catch /最后
/ *的try / catch /最后* /
试
{
sqlConn.Open();
sqlCmd.ExecuteNonQuery();
}
赶上(SQLEXCEPTION sqlEx)
{
sqlErrorLabel.Text = sqlEx.ToString();
sqlErrorLabel.ForeColor = System.Drawing.Color.Red;
}
终于
{
sqlConn.Close();
}
和方法的签名:
公共静态无效updateTicketInDatabase(门票ticketToBeSubmitted,标签sqlErrorLabel,INT ticketID)
< DIV CLASS =h2_lin>解决方案
更新不就是无效的语法(编辑:OP纠正这一点)。这个问题也可能是文本
一栏。 文本
是SQL Server中的关键字,因为它是一个数据类型。尝试把它周围的括号内。
更新yak_tickets
设置电子邮件= @emailParam,
受= @subjectParam ,
[文字] = @textParam,
statusid = @statusIDParam,
ticketClass = @ticketClassParam
WHERE ID = @ticketIDParam
enter code here
I'm trying to update an MSSQL table using SqlCommand, I think it's a syntax error with my T-SQL, but here is what I have so far:
SqlCommand sqlCmd = new SqlCommand("UPDATE yak_tickets SET email = @emailParam, subject = @subjectParam, text = @textParam, statusid = @statusIDParam, ticketClass = @ticketClassParam WHERE id = @ticketIDParam", sqlConn);
The parameters are working as they should, however, the table never gets updated when I run the code. Any help would be appreciated =)
Here is the rest of the code:
#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();
}
And the method's signature:
public static void updateTicketInDatabase(Ticket ticketToBeSubmitted, Label sqlErrorLabel, int ticketID)
UPDATE FROM is invalid syntax (edit: OP corrected this). The problem might also be the "text
" column. text
is a keyword in SQL Server, since it's a datatype. Try putting brackets around it.
UPDATE yak_tickets
SET email = @emailParam,
subject = @subjectParam,
[text] = @textParam,
statusid = @statusIDParam,
ticketClass = @ticketClassParam
WHERE id = @ticketIDParam
这篇关于使用SqlCommand.Parameters C#更新表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!