【发布时间】:2015-11-03 19:11:03
【问题描述】:
我第一次尝试从 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 特性?
【问题讨论】:
标签: c# oracle ado.net null dbnull