不想制作多个重载函数。查询参数问题

时间:2011-05-20 16:58:52

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

可以通过查询字符串发送可变数量的参数。在我的形式中,查询发送一些可能并不总是被填充的参数,即它们将被发送为id=""。这意味着如果一个参数没有进入,我的TableAdapter中使用的函数将带来错误的结果。即它收到了7个参数,而它期待8个(或者第8个将是NULL)。

我能想到的唯一解决方法是制作重载函数。但这意味着我将不得不制作64个重载函数(8个参数)。太多的工作,这让我觉得可能有一些其他方式我可以完成工作而不需要64个功能。

有没有?

使用MSSQL处理ASP.NET

3 个答案:

答案 0 :(得分:0)

64个重载函数显然不是一个可行的解决方案。现在可能是查看WorkTable适配器代码的时候了,因为它听起来没有非常优雅地处理特殊值。

我会跟ashelvey建议使用8个参数的一个方法,并确保处理代码足够强大以处理空值或空字符串。

答案 1 :(得分:0)

介绍an object that is specifically for the parameters

public void DoWork(params OperationArgs args[]) { /* code */ }

class OperationArgs {
    public int? Id { get; set; }
    public string Keywords { get; set; }
    // etc
}

答案 2 :(得分:0)

我们正在使用一项工作,它对我们来说非常有效。

您不需要进行任何重载功能。您可以传递所有参数的值,如果有空值,您只需传递'%',您也不需要对查询执行任何操作。以下是SQL查询的示例:

Select * from Student where ID = 5 AND RollNo = '%' AND CourseID = '%'

如果在SQL Server中检查上述查询,它将为您提供正确的结果。

注意:我没有使用TableAdapter对此进行测试,但我相信它会起作用。