0

我有一个这样的选择语句..

Select * From A Join B on A.ID = B.ID
 And A.Gener = 'M'
 And A.Age = 21
 And B.School = 'Bluh'   
--- many more AND Clauses

现在这些“AND”子句是动态的,它们将根据我的 vb.net Web 应用程序中的用户选择构建......

例如...

if gener.text <> "" Then
   qry = qry & " And A.Gender='M'"

我真的不想像这样即时构建我的 SQL 查询。有没有办法使用 LINQ 或其他方法做得更好?

我的实际 SQL 查询将包含多达 30 个动态 AND(基于用户选择)。

请指教。

谢谢

4

2 回答 2

1

用于每个语句:

qry = qry & " And (A.Gender='" & gender.Text & " ' OR '" & gender.Text & "' = '' ) "

于 2013-01-15T07:41:20.427 回答
0

我会这样改变

Select * From A Join B on A.ID = B.ID
 And (A.Gener = @arg1 or @arg1 is null)
 And (A.Age = @arg2 or @arg2 is null)
 And (B.School = @arg3 or @arg3 is null)

--- 更多 AND Clausesju

这样,如果您将空值传递给过程,它们将在逻辑上被忽略 - 不知道它是否适用于您的情况

明确构建动态 tsql 查询应用端是对 sql 注入的邀请

于 2013-01-15T09:56:49.707 回答