繁体   English   中英

将null传递到SQL命令

[英]Passing null into a SQL command

我有一堂课:

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为null,则它将在数据库中输入null,但出现错误:

无法将类型'string'隐式转换为'bool'

无法确定条件表达式的类型,因为'System.DBNull'和'string'之间没有隐式转换

塞卡(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);

强烈建议使用参数。 但是在您的情况下,您只需输入“ Null”即可。 会的。

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

该查询将照原样进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM