怎的根据传递过来的参数,动态组合sql语句
怎样根据传递过来的参数,动态组合sql语句?
我这个是 控制四个下拉框的 查询语句 当选择一个下拉框以后 选择的值就会传递过去 但是 当选择两个或三个的时候有的没有选择 它的值 就是 null 这样 and 就满足不了条件 查询不出来数据。。。
我这里面传过来了太多参数,而且 有些参数 只有 选择了下拉框以后 才会 将值赋过来。。。但是 在没有付过来之前 它们是空的,因为 个条件之间是 and 所以 在查询语句里面 就不会查寻到 结果 ,那么怎样 写 当 有些值是空值的时候 不让其参与 作为 查询条件呢? 总不能 写好多个
------解决方案--------------------
for example
我这个是 控制四个下拉框的 查询语句 当选择一个下拉框以后 选择的值就会传递过去 但是 当选择两个或三个的时候有的没有选择 它的值 就是 null 这样 and 就满足不了条件 查询不出来数据。。。
- Java code
public List<Map<String, Object>> findMovieByType(String type,String spinnerRegion,String spinnerActor,String spinnerYear,String television,int pageNum,int numSize){ Cursor cursor = db.rawQuery("select * from Online_All where type=? and region=? and actor=? and year=? and television=? limit ?,?", new String[]{String.valueOf(type),String.valueOf(spinnerRegion),String.valueOf(spinnerActor), String.valueOf(spinnerYear),String.valueOf(television),String.valueOf(m),String.valueOf(numSize)}); }
我这里面传过来了太多参数,而且 有些参数 只有 选择了下拉框以后 才会 将值赋过来。。。但是 在没有付过来之前 它们是空的,因为 个条件之间是 and 所以 在查询语句里面 就不会查寻到 结果 ,那么怎样 写 当 有些值是空值的时候 不让其参与 作为 查询条件呢? 总不能 写好多个
- Java code
if(type==null){ Cursor cursor = db.rawQuery("查询语句里面 不写 type=? "); } if(spinnerRegion==null){ Cursor cursor = db.rawQuery("查询语句里面 不写 region=?"); } 。。。。等等 这样写的话 就不用说了 太不实际了。。。
------解决方案--------------------
for example
- Java code
StringBuilder sql = StringBuilder("select * from Online_All where 1=1"); if (type!=null && !type.isEmpty()) sql.append(" and type = '").append(type).append("'"); if (spinnerRegion!=null && !spinnerRegion.isEmpty()) sql.append(" and region = ").append(spinnerRegion).append("'"); ... //so on Cursor cursor = db.rawQuery(sql.toString());
------解决方案--------------------