在我的ASP.net C#web项目中,我有一个包含参数的查询命令对象。我使用以下代码填充参数:
DbCommand command = conn.CreateCommand();
command.CommandText = query;
DbParameter param = command.CreateParameter();
param.ParameterName = parameter;
param.DbType = DbType.String;
param.Value = value;
此代码适用于除空字符串之外的所有字符串。如果我将输入字段留空,则会将值传递为“”。如果发生这种情况,我会收到以下异常:
ORA-01400: cannot insert NULL into (string)
有没有办法允许我在数据库中插入空字符串?
我使用Oracle数据库,我使用System.Data.OracleClient作为提供程序。
答案 0 :(得分:3)
如果要插入空字符串,则必须允许NULL值。否则,Oracle会将空字符串静默转换为NULL,您将获得异常。
另一种选择是插入一个空格' '
的空字符串,但我认为这会很痛苦。
以下是有关Oracle为何(非标准)方式执行此操作的更多信息: Why does Oracle 9i treat an empty string as NULL?
答案 1 :(得分:0)
如果值为null,请设置param.Value = DBNull.Value,而不是将其设置为null:
if (value == null)
{
param.Value = DBNull.Value;
}
else
{
param.Value = value;
}
答案 2 :(得分:0)
试
param.Value = string.IsNullOrEmpty(value) ? DBNull.Value : value;