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'