如何使用更新语句将NCHAR设置为null(C#sqlcommand)

时间:2015-09-04 15:20:10

标签: c# sql sql-server sqlcommand

我想知道如何使用update语句将nchar列设置为null。我发现了这个:NULL value for int in Update statement

表示你必须强制转换为将非int字段设置为NULL

所以我尝试了以下内容:

commandText = 
  @"UPDATE Brukere 
      SET Engangskode = CAST(NULL AS NCHAR) 
    WHERE Navn = @navn AND Mobilnr = @mobilnr";

但是,当我执行此操作时,它仍然不会将列更新为NULL。我错了,还是别的什么?任何帮助将不胜感激:)

如果需要,可以使用更长的代码片段:http://pastebin.com/8auKuk6Q

3 个答案:

答案 0 :(得分:2)

问题是您将局部变量commandText设置为更新语句而不是command.CommandText。将其更改为以下

command.CommandText = "UPDATE Brukere SET Engangskode=NULL WHERE Navn=@navn AND Mobilnr=@mobilnr";

我认为无论有没有演员,它都能奏效。

答案 1 :(得分:2)

我建议到"重复使用"示例中的SqlCommand - 为UPDATE语句创建一个新的特定命令,如下所示:

using (SqlConnection con = new SqlConnection(connectionString))
{
    con.Open();

    string bruker = Request.Cookies["Navn"].Value;
    string mobilnr = Request.Cookies["Mobilnr"].Value;

    string commandText = "SELECT Engangskode FROM Brukere WHERE Navn=@navn AND Mobilnr=@mobilnr";

    bool correctCode = false;

    try
    {
        using (SqlCommand command = new SqlCommand(commandText, con))
        {
            .....

            if (correctCode)
            {
                // DO NOT "reuse" the previous SqlCommand - create a new, specific one!
                string updateQuery = "UPDATE Brukere SET Engangskode = NULL WHERE Navn = @navn AND Mobilnr = @mobilnr;";

                using (SqlCommand updateCmd = new SqlCommand(updateQuery, con)
                {
                    updateCmd.Parameters.Add("@navn", SqlDbType.NVarChar, 20).Value = bruker;
                    updateCmd.Parameters.Add("@mobilnr", SqlDbType.NChar, 10).Value = mobilnr;

                    updateCmd.ExecuteNonQuery();

                    Response.Redirect("Kvittering.aspx",  false);
                }
            }
        }                                    
    }
    catch( .... )
    {
        .......
    }
}            

答案 2 :(得分:0)

无需施法。 Juse set column = null。没有引号,所以!