Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
ASP.Net C#CreateParameter带有空字符串_C#_Asp.net_Oracle_Ora 01400 - Fatal编程技术网

ASP.Net C#CreateParameter带有空字符串

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

在我的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作为提供程序。

如果该值为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之间没有隐式转换