成功解决
上述代码存在缺陷,是查找距离今天前7天的代码,没有查找距离今天大的日期,修改方案如下:
解决方案2:
SQLiteDatabase sdb = sd.getReadableDatabase();// 取得SQLiteDatabase数据库实例
// 从sqlite数据库里面提取数据
Cursor c1 = sdb.query("note", new String[] { "noteTime"
}, "julianday('now')-julianday(note.noteTime)<7", null, null, null, "noteId asc");
while (c1.moveToNext()) {
String noteTime = c1.getString(c1.getColumnIndex("noteTime"));
tv.setText(noteTime);
}
sdb.close();
上述的代码只是查找出了距离今天前的7天的距离,与业务逻辑不符。
不过把上述的代码改成:
SQLiteDatabase sdb = sd.getReadableDatabase();// 取得SQLiteDatabase数据库实例
Map<String, Object> map = new HashMap<String, Object>();
// 从sqlite数据库里面提取大于今天日d的备忘记录数据
Cursor c1 = sdb.query("note", new String[] { "noteTime","noteContent"
}, "strftime('%d',noteTime)>strftime('%d','now')", null, null, null, "noteId asc");
/*
* 后台打印数据为:11-13 10:47:27.588: I/System.out(1272): 2013-10-14 09:57:09
11-13 10:47:27.588: I/System.out(1272): 2013-10-15 09:57:41
11-13 10:47:27.589: I/System.out(1272): 2013-10-16 09:58:11
*/
String result="";// 保存遍历结果
while (c1.moveToNext()) {
String noteContent=c1.getString(c1.getColumnIndex("noteContent"));
String noteTime = c1.getString(c1.getColumnIndex("noteTime"));
result=result+noteTime+"\n"+noteContent+"\n";
System.out.println(result);// 后台打印信息时查询出了后台打印了两条2013年11月12日的信息:
/*map.put("noteTime", noteTime);
// 测试sql语句是否查询最近一个礼拜的记录信息
System.out.println(map.toString());
// 结果是错误的:后台打印了两条2013年11月12日的信息:分别是:11-13 09:07:31.152: I/System.out(3401): {noteTime=2013-11-12 10:51:40}、11-13 09:07:31.159: I/System.out(3401): {noteTime=2013-11-12 10:53:09}
Collection<Object> vs = map.values(); //获取Map集合的value集合
String str="";// 保存values值
for (Object object : vs) {
str=str+object;
System.out.println(str); //输出键值对象
}*/
}
tv.setText(result);
c1.close();
成功查找出比今天日期大的记录。主要是修改了sql语句,改成了:
"strftime('%d',noteTime)>strftime('%d','now')"
成功解决。以后完善一下是不是可以查找出距离一个礼拜的记录。待续。。。。