c# - 参数化查询需要参数 ,但未提供该参数

标签 c# asp.net-mvc

在我的 MVC 应用程序中有一个方法

public void insertAddress(AddressModel address)
{
        var connection = OpenConnection();
        var command = connection.CreateCommand();
        command.CommandText = "insert into Adres (AddressLine_1,AddressLine_2,Postcode,Town,DateMovedIn,Id) values (@AddressLine_1, @AddressLine_2, @Postcode, @Town,@DateMovedIn,@Id)";
        AddParameterString(command, "@AddressLine_1", address.AddressLine_1);
        AddParameterString(command, "@AddressLine_2", address.AddressLine_2);
        AddParameterString(command, "@Postcode", address.Postcode);
        AddParameterString(command, "@Town", address.Town);
        AddParameterString(command, "@DateMovedIn", address.DateMovedIn.ToString("yyyyMMdd"));
        AddParameterInt(command, "@Id", address.Id);

        command.ExecuteNonQuery();
}
模型中的

AddressLine2 不是必需的。当用户未提交 AddressLine2 时,我收到错误:

The parameterized query '(@AddressLine_1 nvarchar(3),@AddressLine_2 nvarchar(4000),@Postc' expects the parameter '@AddressLine_2', which was not supplied.

如何修改此方法以在两种情况下工作 - 用户提交 AddressLine2 和用户不提交 AddressLine2

最佳答案

public void insertAddress(AddressModel address)
{
    var connection = OpenConnection();
    var command = connection.CreateCommand();
    command.CommandText = "insert into Adres (AddressLine_1,AddressLine_2,Postcode,Town,DateMovedIn,Id) values (@AddressLine_1, @AddressLine_2, @Postcode, @Town,@DateMovedIn,@Id)";
    command.Parameters.Add(new SqlParameter { ParameterName = "@AddressLine_1", Value = address.AddressLine_1 });
    if (address.AddressLine_2 == null)
    {
        command.Parameters.Add(new SqlParameter { ParameterName = "@AddressLine_2", Value = DBNull.Value });
    }
    else
    {
        command.Parameters.Add(new SqlParameter { ParameterName = "@AddressLine_2", Value = address.AddressLine_2 });
    }
    command.Parameters.Add(new SqlParameter { ParameterName = "@Postcode", Value = address.Postcode });
    command.Parameters.Add(new SqlParameter { ParameterName = "@Town", Value = address.Town });
    command.Parameters.Add(new SqlParameter { ParameterName = "@DateMovedIn", Value = address.DateMovedIn.ToString("yyyyMMdd") });
    command.Parameters.Add(new SqlParameter { ParameterName = "@Id", Value = address.Id });
    command.ExecuteNonQuery();
}

关于c# - 参数化查询需要参数 ,但未提供该参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33993251/

相关文章:

c# - 具有动态编程的 FrameworkElement 和 FrameworkContentElement 的通用接口(interface)

asp.net-mvc - 使用 ASP.NET MVC MapRoute 重定向

c# - 通过扩展 DefaultControllerFactory 实现 DI 与实现 IDependencyResolver 之间的区别

c# - 如何检测第一次运行 ClickOnce 部署的应用程序?

c# - Entity Framework - 一对一 - ReferentialConstraint 映射到存储生成的列

c# - 方法参数可以通过引用传递对象但只读吗?

c# - 无法将类型 System.LinQ.IOrderedEnumerable 隐式转换为 MyClassCollection。存在隐式转换(您是否缺少强制转换?)

c# - 带有 Ninject 依赖注入(inject)的 ASP.NET MVC 应用程序中的 MongoDB 官方 C# 驱动程序

javascript - 从 onClick() 加载完整 View

javascript - id太多会影响性能吗