2011-05-20 70 views
0

可以通过查询字符串发送可变数量的参数。在我的表单中,查询发送了一些可能并不总是被填充的参数,即它们将作为id=""发送。这意味着在TableAdapter中使用的函数会带来错误的结果,如果一个参数不进来,即它收到7个参数,而期望8个(或第8个将为NULL)。不想让多个重载函数。查询参数问题

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

有没有?

与MSSQL

上ASP.NET工作
+1

为什么不只是让一个方法接受8个参数并传入null或空,如果其中一个值不在查询字符串中? – ashelvey 2011-05-20 17:01:02

回答

0

有一个我们正在使用的工作,它完全适合我们。

您不需要做任何重载功能。你可以传递所有参数的值,如果有一个空值,你可以简单地通过'%',你也不需要对查询做任何事情。这里是一个SQL查询的例子:

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

如果你在SQL服务器上检查上面的查询它会给你正确的结果。

说明:我还没有用TableAdapter测试过这个,但我相信它会起作用。

+0

这是非常好的解决方案。它会在下次尝试像htis时那样工作。对于我来说,我使用了很多makshift处理。谢谢 – prometheuspk 2011-05-21 06:06:06

+0

祝你好运男人:) – 2011-05-21 06:07:15

+0

对不起,错别字 – prometheuspk 2011-05-21 06:13:42

0

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

我会与ashelvey的建议与8参数的一种方法,并确保处理代码足够健壮,以处理空值或空字符串。

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 
} 
+0

调整为你让DoWork取数组 – 2011-05-20 18:25:03