使用SqlCommand.Parameters C#更新表 [英] C# Update Table using SqlCommand.Parameters

查看:212
本文介绍了使用SqlCommand.Parameters C#更新表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此输入代码我试图更新使用的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 hereI'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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆