【发布时间】:2013-06-21 04:18:33
【问题描述】:
我正在尝试根据查询字符串参数动态创建 MS SQL 查询。
我目前正在使用请求任何有效查询字符串参数值的变量:如果参数不为空,则该变量构成 SQL 语句的一部分。如果为空,则变量保持空白。
例如:
var search = Request["search"].IsEmpty() ? "" : Request["search"];
var price = Request["price"].IsEmpty() ? "" : Request["price"];
string searchSQL = "WHERE item_name LIKE '%" + search + "%'";
string priceSQL = " AND item_price < " + price;
string sql = "SELECT * from Items " + searchSQL + priceSQL;
如果两个查询参数都有效,那么这个 sql 查询运行正常。但是如果搜索参数为空且价格不为空,则sql查询无效:
SELECT * from Items AND item_price < 100
我的计划是使用最多 6 个不同的查询字符串参数,所以这个 sn-p 的代码不能真正使用。这种方法的最佳实践是什么?是否可以通过这种方式创建有效的动态 sql 语句?
【问题讨论】:
-
最佳实践至少从使用参数开始。
标签: asp.net sql sql-server-2008