我想知道如何使用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
答案 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。没有引号,所以!