我有一个winform,其中有许多文本框和组合框。用户将数据填充到我需要将其作为where子句添加到我的sql查询的每个文本框中。
在检查用户是否添加或选择了项目后,我尝试创建一个列表。我需要知道如何将此列表添加到查询中。
查询不带列表的
(kivuto_id, region_id)
此查询正常运行,但是我必须填写所有控件。 如果用户仅填写框,我需要知道如何制作条件。
答案 0 :(得分:0)
我不确定这是否是最好的答案,但是它会起作用。我解决这个问题的方法是使用C#动态创建搜索字符串。如果搜索条件不是null或“”,则例如:
if(res_from != null && res_from != "")
search_channel += "r.[Actual Date in] < @VALUE AND"; //You will need to add an AND/OR at the end and remove the trailing ones.
当您向SQL注入攻击开放时,我也不会直接插入值。
cmd.Parameters.AddWithValue("@VALUE", (res_from == null) ? res_from.Value.ToString("yyyy/MM/dd) : "");
您将需要一些代码来删除搜索字符串末尾的任何“ AND”或“ OR”,如果未使用搜索字符串,则还需要在开始时删除“ WHERE”。
删除最后一个“ AND”或“ OR”的代码如下:
if(search_channel.EndsWith("WHERE"))
search_channel = search_channel.Substring(0, myString.Length-5);
if(search_channel.EndsWith("AND"))
search_channel = search_channel.Substring(0, myString.Length-3);
if(search_channel.EndsWith("OR"))
search_channel = search_channel.Substring(0, myString.Length-2);
不确定这是否是最好的解决方案,但对我有用。
我已根据注释进行了修改,并且即使res_from为null,我也将AddWithValue更改为可以工作,否则您将收到错误消息。