Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从C将函数posgrest中的null设置为整数#_C#_.net_Postgresql_Function_Null - Fatal编程技术网

C# 如何从C将函数posgrest中的null设置为整数#

C# 如何从C将函数posgrest中的null设置为整数#,c#,.net,postgresql,function,null,C#,.net,Postgresql,Function,Null,我对将参数null传递给integer类型的解决方案感到困惑。这是我在.Net项目中使用angular的代码。谢谢你的帮助 if(data.searchRange != "") { m_npgDB.SetParams("p_searchRange", int.Parse(data.searchRange)); } else { m_npgDB.SetParams("p_searchRange", "&quo

我对将参数null传递给integer类型的解决方案感到困惑。这是我在.Net项目中使用angular的代码。谢谢你的帮助

if(data.searchRange != "") 
{
    m_npgDB.SetParams("p_searchRange", int.Parse(data.searchRange)); 
}
else
{
    m_npgDB.SetParams("p_searchRange", ""); 
}

您只需要创建一个参数

if (int.TryParse(data.searchRange, out var range))
{
    m_npgDB.SetParams("p_searchRange", range); 
}
else
{
    m_npgDB.SetParams("p_searchRange", null); 
}
您应该能够使用可为空的整数

var value = int.TryParse(data.searchRange, out var range) ? range : default(int?);

m_npgDB.SetParams("p_searchRange", value); 

     

是否允许只传递
null
?如果没有,它是否理解db allow null中的/allow
DBNull.Value
?列。我在postgrest函数中有一个条件,例如(p_searchRange为null或search_range=p_searchRange)整数类型在C#中可以为null,但您在else子句中没有传递null,而是传递空字符串。@jdoer1997整数是值类型,所以它们不能是
null
…嗯,我尝试更改类型为数值,使用SetParamNumber为“”。成功了!(仅供参考,不需要对
range
进行显式强制转换)SetParams方法是接受参数2是字符串、int、bool等,但不接受nullable。您可以更改
SetParams
方法以接受nullable int或使其成为泛型。ADO.NET为sql查询接受不同类型的.NET参数。该方法从元数据中设置NpgDBManager库中的参数。不能改变方法。如果在参数中传递nullable。数据是类似于“null”字符串的字符。非空值。然后使用接受
int?
的其他方法或直接使用Npgsql创建带参数的命令。