ASP.Net C#CreateParameter带有空字符串
在我的ASP.net C#web项目中,我有一个带有参数的查询命令对象。我使用以下代码填充参数:ASP.Net C#CreateParameter带有空字符串,c#,asp.net,oracle,ora-01400,C#,Asp.net,Oracle,Ora 01400,在我的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
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作为提供程序。如果该值为null,请设置param.value=DBNull.value,而不是将其设置为null:
if (value == null)
{
param.Value = DBNull.Value;
}
else
{
param.Value = value;
}
如果要插入空字符串,必须允许空值。否则Oracle会将空字符串静默地转换为NULL,您将得到异常 另一种选择是插入一个带有空格的空字符串
'
,但我认为这会很痛苦
以下是有关Oracle为何采用这种(非标准)方式的更多信息:
试试看
param.Value = string.IsNullOrEmpty(value) ? DBNull.Value : value;
值变量确实是一个空字符串而不是null,您是否为正值?如何从字段(我猜是从html表单)分配给变量?System.DBNull和string之间没有隐式转换