将空参数传递给存储过程

时间:2019-12-21 14:56:12

标签: c# sql-server asp.net-core

在我的<p *ngIf="lorem">{{ lorem.lorem_date | fullDate }}</p> 方法中,我正在使用存储过程来Create我的SQL Server数据库。有时,诸如INSERT INTO之类的字段将留空。但是,它不符合我的期望。

首先,这是我的方法的样子:

Comment

using (SqlConnection connection = new SqlConnection(connectionString)) { string sql = "CreateTask"; using (SqlCommand command = new SqlCommand(sql, connection)) { command.CommandType = CommandType.StoredProcedure; ..................... parameter = new SqlParameter { ParameterName = "@Condition", Value = task.Condition, SqlDbType = SqlDbType.NVarChar }; command.Parameters.Add(parameter); ..................... 为空时,task.Condition收到以下错误:

  

:'过程或函数'CreateTask'需要未提供的参数'@Condition'。'

但是,表中的列设置为允许空值。

enter image description here

存储过程也如下所示:

command.ExecuteNonQuery();

因此,我应该如何调整才能使存储过程获得空值?

1 个答案:

答案 0 :(得分:1)

如果数据为空,并且您要将DBNull.Value插入数据库,请尝试将SqlParameter分配给null

parameter = new SqlParameter
{
    ParameterName = "@Condition",
    Value = (object)task.Condition ?? DBNull.Value,
    SqlDbType = SqlDbType.NVarChar
};
相关问题