如何使用更新语句(C# sqlcommand)将 NCHAR 设置为空
How to set NCHAR to null with an update statement (C# sqlcommand)
我想知道如何使用更新语句将 nchar
列设置为空。我发现了这个:NULL value for int in Update statement
这表示您必须强制转换才能将非整数字段设置为 NULL
。
所以我尝试了以下方法:
commandText =
@"UPDATE Brukere
SET Engangskode = CAST(NULL AS NCHAR)
WHERE Navn = @navn AND Mobilnr = @mobilnr";
但是,当我执行此操作时,它仍然不会将列更新为 NULL
。我投错了,还是别的什么?任何帮助将不胜感激:)
如果需要更长的代码片段:http://pastebin.com/8auKuk6Q
无需投射。 Juse 设置列 = null。没有引号,不过!
问题是您将局部变量 commandText
设置为更新语句而不是 command.CommandText
。改为如下
command.CommandText = "UPDATE Brukere SET Engangskode=NULL WHERE Navn=@navn AND Mobilnr=@mobilnr";
而且我认为无论有没有转换都可以。
我会建议 NOT 到 "re-use" 你的示例中的 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( .... )
{
.......
}
}
我想知道如何使用更新语句将 nchar
列设置为空。我发现了这个:NULL value for int in Update statement
这表示您必须强制转换才能将非整数字段设置为 NULL
。
所以我尝试了以下方法:
commandText =
@"UPDATE Brukere
SET Engangskode = CAST(NULL AS NCHAR)
WHERE Navn = @navn AND Mobilnr = @mobilnr";
但是,当我执行此操作时,它仍然不会将列更新为 NULL
。我投错了,还是别的什么?任何帮助将不胜感激:)
如果需要更长的代码片段:http://pastebin.com/8auKuk6Q
无需投射。 Juse 设置列 = null。没有引号,不过!
问题是您将局部变量 commandText
设置为更新语句而不是 command.CommandText
。改为如下
command.CommandText = "UPDATE Brukere SET Engangskode=NULL WHERE Navn=@navn AND Mobilnr=@mobilnr";
而且我认为无论有没有转换都可以。
我会建议 NOT 到 "re-use" 你的示例中的 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( .... )
{
.......
}
}