将空值传入SQL命令

本文关键字:SQL 命令 值传 空值 | 更新日期: 2023-09-27 18:11:11

我有一个类:

public class Intlist
{
    public int yesFlag{ get; set; }
    public int? noFlag { get; set; }
}

我需要更新一个数据库表,但有时对于可空的int值为null。我正在使用

CommandText = @"UPDATE thetable 
                SET Yes = " + list.yesFlag +
                   ",NoFlag = " + (list.previous == null) ? DBNull.Value : list.previous +
                   ",NextValue = 10" 

我试图得到它,所以如果noFlag是空的,它在数据库中输入一个空,但我得到错误:

不能隐式地将类型"string"转换为"bool"

不能确定条件表达式的类型,因为有系统之间没有隐式转换。DBNull' and 'string'

将空值传入SQL命令

Sayka命中目标。<<strong>使用参数/strong>。

你不仅可以保护你的数据库免受sql注入攻击,而且可以利用。net内置的功能来处理这些类型的问题。

    CommandText = @"UPDATE thetable SET Yes = @yesFlag, NoFlag = @noflag, NextValue = 10";
    Command.Parameters.AddWithValue("@yesFlag", list.yesFlag);
    Command.Parameters.AddWithValue("@noFlag", list.previous);

强烈建议使用参数。但在您的情况下,您只需输入为'Null'。会成功的。

CommandText = @"UPDATE thetable SET Yes = " + 
             list.yesFlag.ToString() + ",NoFlag = " + (list.previous == null 
             ? "NULL" : list.previous) + ",NextValue = 10";