我正在初步学习如何从C#访问Oracle。我发现Oracle不支持将
因此,我需要捕获这些空值并提供
VarChar
参数的值设为null
(C#)。我本以为会有一些隐式转换,但我理解其中的差异。因此,我需要捕获这些空值并提供
DBNull.Value
,是吗?最明显的方法是使用合并运算符??
:param myParm = myObject.MyProperty ?? DBNull.Value;
但是它不接受 System.DBNull
的值,所以我必须使用:
param myParm = myObject.MyProperty ?? DBNull.Value.ToString();
...这与以下内容相同:
param myParm = myObject.MyProperty ?? String.Empty;
...同样有效。
但是我一直认为根据ANSI SQL规则,空字符串("") != NULL值......然而在Oracle中似乎是这样的。
无论如何,我的问题是,处理空字符串值的情况最好、实用或理论上的方法是什么?是否有我尚未确定的巧妙替代方案?还是这只是我们接受的Oracle的另一个怪癖?