首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

怎的根据传递过来的参数,动态组合sql语句

2012-08-11 
怎样根据传递过来的参数,动态组合sql语句?我这个是 控制四个下拉框的 查询语句当选择一个下拉框以后 选择

怎样根据传递过来的参数,动态组合sql语句?
我这个是 控制四个下拉框的 查询语句 当选择一个下拉框以后 选择的值就会传递过去 但是 当选择两个或三个的时候有的没有选择 它的值 就是 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 onCursor cursor = db.rawQuery(sql.toString());
[解决办法]
探讨
for example

Java code

StringBuilder sql = StringBuilder("select * from Online_All where 1=1");
if (type!=null &amp;&amp; !type.isEmpty())
sql.append(" and type = '").append(type).append("'……

热点排行