C# SQLCommand.CreateParameter.Value=DBNull.Value不返回结果

C# SQLCommand.CreateParameter.Value=DBNull.Value不返回结果,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,我有这样的代码创建一个空参数 p = cmd.CreateParameter(); p.DbType = DbType.Int32; p.ParameterName = strName; p.Value = DBNull.Value; cmd.Parameters.Add(p); 当我插入一条记录时,SQLValue被设置为{Null} 并且该记录正确地创建为该列使用空值 当我选择一个记录尝试检索一个空值的记录时,使用上面相同的方法设置参数。参数的SQLValue再次是{Null}

我有这样的代码创建一个空参数

 p = cmd.CreateParameter();
 p.DbType = DbType.Int32;
 p.ParameterName = strName;
 p.Value = DBNull.Value;
 cmd.Parameters.Add(p);
当我插入一条记录时,SQLValue被设置为{Null}

并且该记录正确地创建为该列使用空值

当我选择一个记录尝试检索一个空值的记录时,使用上面相同的方法设置参数。参数的SQLValue再次是{Null}

所以相同的代码设置相同…但现在它不返回记录。当我想创建一个空值的参数(p.value=DBNull.value;)时,我无法检索任何记录。我没有得到任何回报

我知道这不是查询,因为如果我将参数更改为具有值的参数,我将返回该记录。我是否缺少设置参数以查找空值的内容?我所看到的一切都是这么说的

以下是查询

Select * from view_full_class_nests 
where parent_interface_class_pk = @parent_interface_class_pk
另外,如前所述,如果参数设置了一个值,则此查询可以正常工作…只有当值为DBNull.value时,检索才会失败

下面的数据提供了有用的链接,给了我答案

需要将查询设置为Select*from view\U full\U class\U NETS
如果parent\u interface\u class\u pk=@parent\u interface\u class\u pk或@parent\u interface\u pk为Null,则不能在where子句中比较Null:

发件人:

因为null被认为是未知的,所以相互比较的两个null值被认为是不相等的。在使用算术运算符的表达式中,如果任何操作数为null,则结果也为null

您必须使用ISNULL运算符,请参阅下面的先前答案,该答案可能会对您有所帮助:


您不能在where子句中比较NULL:

发件人:

因为null被认为是未知的,所以相互比较的两个null值被认为是不相等的。在使用算术运算符的表达式中,如果任何操作数为null,则结果也为null

您必须使用ISNULL运算符,请参阅下面的先前答案,该答案可能会对您有所帮助:


您应该在Select查询中使用
ISNULL
检查。。能否显示Select查询..?在原始发布的底部添加了请求的sql查询。对于初学者,您需要多次停止发布同一问题。。此外,你还应该阅读如何询问有关张贴代码的问题。。您在代码中的何处显示了
@parent\u interface\u class\u pk
是什么或定义了什么?也许您应该阅读一下如何使用
Command.Parameters.Add函数或AddWithValue函数
还可以创建一个存储过程,在该过程中,您可以向存储过程传递一个参数,而不是尝试执行看起来是动态sql的操作。。我的回答也是
GL
我想也许你应该把这个查询放到一个存储过程中,并在存储过程中定义你的参数:“@parent\u interface\u class\u pk int=NULL”你应该在你的选择查询中使用
ISNULL
检查。。能否显示Select查询..?在原始发布的底部添加了请求的sql查询。对于初学者,您需要多次停止发布同一问题。。此外,你还应该阅读如何询问有关张贴代码的问题。。您在代码中的何处显示了
@parent\u interface\u class\u pk
是什么或定义了什么?也许您应该阅读一下如何使用
Command.Parameters.Add函数或AddWithValue函数
还可以创建一个存储过程,在该过程中,您可以向存储过程传递一个参数,而不是尝试执行看起来是动态sql的操作。。我的回答也是
GL
我想也许你应该把这个查询放到一个存储过程中,并在存储过程中定义你的参数:'@parent\u interface\u class\u pk int=NULL'