我有一个班级:
public class Intlist
{
public int yesFlag{ get; set; }
public int? noFlag { get; set; }
}
我需要更新数据库表,但有时可以为null的int值为null。我正在使用
CommandText = @"UPDATE thetable
SET Yes = " + list.yesFlag +
",NoFlag = " + (list.previous == null) ? DBNull.Value : list.previous +
",NextValue = 10"
我试图得到它,如果noFlag为null,它在数据库中输入null,但我收到错误:
无法将类型'string'隐式转换为'bool'
和
由于存在,因此无法确定条件表达式的类型 'System.DBNull'和'string'
之间没有隐式转换
答案 0 :(得分:4)
Sayka 是目标。 使用参数。
您不仅可以保护数据库免受SQL注入攻击,还可以利用.Nets内置功能来处理这些类型的问题。
CommandText = @"UPDATE thetable SET Yes = @yesFlag, NoFlag = @noflag, NextValue = 10";
Command.Parameters.AddWithValue("@yesFlag", list.yesFlag);
Command.Parameters.AddWithValue("@noFlag", list.previous);
答案 1 :(得分:1)
强烈建议使用参数。但在你的情况下,你只需输入'Null'。它会起作用。
CommandText = @"UPDATE thetable SET Yes = " +
list.yesFlag.ToString() + ",NoFlag = " + (list.previous == null
? "NULL" : list.previous) + ",NextValue = 10";
此查询将保持原样。