我有一个像这样的Select语句…
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个动态与(基于用户选择)。
请建议。
谢谢
用于所有语句:
qry = qry & "(a .性别='" &性别。文本,"或" &性别。文本,"' = ")"
我会这样修改
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)
——many more AND Clausesju
这样,如果你将空值传递给过程,它们将在逻辑上被忽略-不知道它是否适用于你的情况
构建动态TSQL查询应用程序端无疑是在邀请SQL注入