2011-04-18 90 views
0

我正在编写一个Android应用程序,允许用户将新模块添加到数据库,并为该模块添加日期,开始时间,结束时间和空间。Android SQLite按时间插入和排序

用户可以查看特定日期的所有课程。

我遇到的问题是,现在我正在考虑开始时间和完成时间作为文本,因为我无法找出如何把它作为一个时间。

1)用户点击EditText,弹出TimePicker对话框,用户选择小时和分钟,EditText文本设置为选择的时间。

2)然后将EditText中的文本提取并保存到数据库中。

我有一切工作正常,我面临的唯一问题是,当用户正在查看某一天的所有类我希望它是由开始时间,即第一类,第二等。但现在它只能按照插入数据库的顺序显示它。我已经尝试了ORDER BY,它不会工作。我想我将不得不改变开始时间和完成时间的数据类型。

db.execSQL("CREATE TABLE AllModulesInfo (_id INTEGER PRIMARY KEY AUTOINCREMENT, moduleName TEXT, day Text, startTime Text, finishTime Text, room Text);");

public void insertIntoAllMod(String moduleName, String day, String startTime, String finishTime, String room) 
    { 
     ContentValues daysInfo = new ContentValues(); 
     daysInfo.put("moduleName", moduleName); 
     daysInfo.put(Day, day); 
     daysInfo.put(StartTime, startTime); 
     daysInfo.put(FinishTime, finishTime); 
     daysInfo.put(Room, room);   
     db.insert("AllModulesInfo", null, daysInfo); 
    } 

在此先感谢,如果有什么我还没有解释正确或我已经离开了,这将有助于你在assiting我解决这个问题的任何信息,请让我知道。谢谢

回答

0

它看起来像你使用字符串作为你的时间戳。您需要使用整数来实际存储unix时间戳。然后你的查询将使用ORDER BY将排序正确,例如:

SELECT * FROM table WHERE .... ORDER BY updateTime 

我建议使用Java的直字符串转换为整数,因为这可以让你像你在你的例子显示使用这些参数插入。但是,您可以手动编写查询并使用的SQLite提供的时间函数:

http://www.sqlite.org/lang_datefunc.html


编辑:

看样子你可以使用一个字符串时间戳和SQLite的,但只有少数支持格式(该页面有示例)。虽然我不确定这是否适用于Android,但我总是使用整数字段类型来存储Java时间(实际上可以存储Java longs)。

- Dan