谁帮我改一下查询语句吧 。。。谢谢了。。。

zhuyangyang123 2012-09-14 11:08:02
我的需求是:下拉框里面 有1990-2012 这些年份 ,还有一个 “其他”字段,当我选择其他时。。。搜索出 1900-2012 以外的年份的数据 。我下面写的 if 判断 会报空指针,不知道该怎么写了。。。


public List<Map<String, Object>> findMovieByType(String moviename,String type,String spinnerActor,String spinnerYear,String television,int pageNum,int numSize){

int m = (pageNum-1)*DbUtil.page_Num;
List<Map<String, Object>> movieTypeList = new ArrayList<Map<String, Object>>();
SQLiteDatabase db = dbHelper.getReadableDatabase();

Map<String, String> params = new HashMap<String, String>();
params.put("name", moviename);
params.put("type", type);
params.put("actor", spinnerActor);
/*if(spinnerYear.equals("其他")){
}else{*/
params.put("year", spinnerYear);
//}
params.put("television", television);
Set<String> fields = params.keySet();
List<String> values = new ArrayList<String>();

StringBuilder sql = new StringBuilder("select * from Online_All where 1=1");
for (Object field : fields) {
if(params.get(field)!=null && !params.get(field).isEmpty()){
sql.append(" and "+field+" like '%").append(params.get(field)).append("%'");
}
/*else if(params.get(field)!=null && !params.get(field).isEmpty()&& spinnerYear.equals("其他")){
sql.append(" and "+field+" like '%").append(params.get(field)).append("%'").append("and year>=0 and year<1990");
}*/
}
sql.append(" order by year desc limit ?,?");
values.add(String.valueOf(m));
values.add(String.valueOf(numSize));
Cursor cursor = db.rawQuery(sql.toString(),values.toArray(new String[values.size()]));
while(cursor.moveToNext()){

int num = cursor.getInt(cursor.getColumnIndex("num"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String movieactor = cursor.getString(cursor.getColumnIndex("actor"));
String movieregion = cursor.getString(cursor.getColumnIndex("region"));
String movietype = cursor.getString(cursor.getColumnIndex("type"));
String movieyear = cursor.getString(cursor.getColumnIndex("year"));
String link = cursor.getString(cursor.getColumnIndex("link"));
String jianjie = cursor.getString(cursor.getColumnIndex("jianjie"));
String mtelevision = cursor.getString(cursor.getColumnIndex("television"));

HashMap<String, Object> map = new HashMap<String, Object>();

map.put("moviepic", num);
map.put("movieName", name);
map.put("movieyear", movieyear);
map.put("movieactor", movieactor);
map.put("movieregion", movieregion);
map.put("movietype", movietype);
map.put("movietlink", link);
map.put("jianjie", jianjie);
map.put("television", mtelevision);
movieTypeList.add(map);
}
cursor.close();
db.close();
return movieTypeList;
}
...全文
209 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪馨 2012-09-14
  • 打赏
  • 举报
回复
spinnerYear这个参数传入的是多少,输出看看
zhuyangyang123 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

报错行数?
那个变量为空指针
[/Quote]
我注释了的if 那两段代码,如果 不注释就报空指针。。。我的需求贴上来的代码上面也写了。。。
雪馨 2012-09-14
  • 打赏
  • 举报
回复
报错行数?
那个变量为空指针
zhuyangyang123 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 6 楼 的回复:

Java code


else if(params.get(field)!=null &amp;&amp; !params.get(field).isEmpty()&amp;&amp; spinnerYear.equals("其他"))



你指的这行报空指针? 那么确实只有可能是 spinnerYear的问题啊.……
[/Quote]错了 应该是 6楼,9楼
zhuyangyang123 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

Java code


else if(params.get(field)!=null && !params.get(field).isEmpty()&& spinnerYear.equals("其他"))



你指的这行报空指针? 那么确实只有可能是 spinnerYear的问题啊.

把spinnerYear.equals("其他") 改成 "其他"……
[/Quote]
嗯,谢谢大家。。我忘了说 开始进来的时候 却是传进来的是 空置。。。因为在点击按钮进来的时候就要先 不限东条件 查询 数据现在出来,只有当选择了 下拉框里面的值后 才会给这些相应参数赋值。。。所以刚进来的时候 每个参数都是空的。。。所以 要像 8 ,10 楼说的那样 要反过来判断 一下
DAO 2012-09-14
  • 打赏
  • 举报
回复
"其他".equals(spinnerYear)
不管是不是spinnerYear报空指针,你也应该想上面那么写,避免空指针。。。。
ghostkngiht 2012-09-14
  • 打赏
  • 举报
回复
应该是spinnerYear值为null
你可以在函数的开始 输出spinnerYear看看 System.out.println(spinnerYear);
_jerrytiger 2012-09-14
  • 打赏
  • 举报
回复
这是传说中的android sqlit 微数据库?
albertshaw 2012-09-14
  • 打赏
  • 举报
回复


else if(params.get(field)!=null && !params.get(field).isEmpty()&& spinnerYear.equals("其他"))


你指的这行报空指针? 那么确实只有可能是 spinnerYear的问题啊.

把spinnerYear.equals("其他") 改成 "其他".equals(spinnerYear)试试

li418418qq 2012-09-14
  • 打赏
  • 举报
回复
spinnerYear是空值啊,很明显
zhuyangyang123 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

spinnerYear这个参数传入的是多少,输出看看
[/Quote]
看了,下拉框选的什么,传过来的参数就是什么。。。就出在if 判断其他都没错。。。只是为什么不能写if 这些

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧