2011-04-18 88 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