【问题标题】:Parameterised query expects a parameter (Not accepting Null string)参数化查询需要一个参数(不接受 Null 字符串)
【发布时间】:2011-12-20 10:44:17
【问题描述】:

我只是在执行一个查询,并且已经开始使用参数。一切都很顺利,直到传递了一个空字符串。之前它运行良好,使用 "name = " + Name 其中名称可能为空,也可能不为空。

有没有这么简单的方法?

关于这个话题,我还没有尝试过,但我可以用数字以外的任何东西来识别参数。这是一个可能出错的区域,有 14 个数字参数,除了希望它们的顺序正确之外,没有识别出哪个是哪个。 (如果我来添加另一个呢?)

错误信息:The parameterized query '(@0 nvarchar(5),@1 nvarchar(4),@2 nvarchar(4000),@3 nvarchar(400' expects the parameter '@2', which was not supplied.

参数化查询:

            db.Execute("Update User SET Name = @0 , Address1 = @1 , Address2 = @2 , Address3 = @3, Address4 = @4 , Postcode = @5 , Title = @6, " +
                        " Surname = @7 , Forename = @8 , Tel = @9, Fax = @10 , Mobile = @11 , Email = @12  WHERE UserNo = @13",
                        Name, Address1, Address2, Address3, Address4, Postcode, Title, Surname, Forename, Tel, Fax, Mobile, Email, UserNo);

【问题讨论】:

    标签: c# database asp.net-mvc-3 parameters


    【解决方案1】:
    db.Execute("Update User SET Name = @0 , Address1 = @1 , Address2 = @2 , Address3 = @3, Address4 = @4 , Postcode = @5 , Title = @6, " +
                            " Surname = @7 , Forename = @8 , Tel = @9, Fax = @10 , Mobile = @11 , Email = @12  WHERE UserNo = @13",
                            (Name==null)?"":Name, (Address1==null)?"":Address1, ...);
    

    【讨论】:

    • 好的,这类似于Name ?? ""? :Name 位有什么作用?我希望不要对每个可为空的参数都这样做。
    • condition ? first_expression : second_expression;conditional operator。在这种情况下,是的,它与 Name ?? "" 相同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    相关资源
    最近更新 更多