所以我有这个查询:
var comm = @"SELECT * FROM `TABLE` ";
bool hasWhere = false;
if ( model.Serial > 0 ) {
comm += " WHERE `SERIAL` LIKE '%" + model.Serial + "%' ";
hasWhere = true;
}
if ( model.Id.HasValue && model.Id.Value > 0 ) {
if ( !hasWhere ) {
comm += " WHERE `NUIP` LIKE '%" + model.Id.Value + "%' ";
hasWhere = true;
} else
comm += " AND `NUIP` LIKE '%" + model.Id.Value + "%' ";
}
if ( model.Date.HasValue ) {
if ( !hasWhere ) {
comm += " WHERE `DATE` = '" + model.Date.Value + "' ";
hasWhere = true;
} else
comm += " AND `DATE` = '" + model.Date.Value + "' ";
}
....
....
....
我已经阅读过针对 SQL 注入等的参数化查询。问题是,鉴于我将拥有动态数量的 WHERE 子句(基于搜索模型),我如何参数化查询?我不能放WHERE a = @A AND b=@B...
,因为用户必须不需要根据所有列进行搜索。
任何想法?提前致谢。
PS:不能使用 LINQ 或类似的东西(-业务规则-)。