2011-09-03 70 views
3

我想在我的Android數據庫中存儲日曆條目。 在數據庫中存儲簡單類型(如int和String)是沒有問題的。但我無法弄清楚如何存儲日曆類型。如何在數據庫中存儲日曆數據

我的表如下所示: reate表祝福(_id整數主鍵自動遞增, 「 + 」名稱的文本不爲空,「 +」 日文本,文本picurl,......)

一切都被聲明爲「文本」。

在我的活動中,我有這樣的代碼: Calendar cal = Calendar.getInstance();

cal應該存儲在我的表中。有人可以提供一個提示嗎?

回答

3

保存從日曆中的紀元表示毫秒:

long millis = calendar.getTimeInMillis(); 

然後在數據庫中存儲長此。您可以通過讀取數據庫中的長整型值並在日曆中使用setTimeInMillis(long millis)來恢復日曆。

+0

如何在數據庫中存儲長整型值?我應該將其轉換爲String嗎? – tobias

+0

SQLite支持長整型值作爲「整數」數據類型,使用它。 http://www.sqlite.org/datatype3.html – aromero

+0

太好了。 Thx傢伙! – tobias

0

我會將您的日期轉換爲字符串並將該字符串存儲到數據庫中。 然後,當您從數據庫中讀取字符串時,只需將其解析回日期即可。

+0

這個我已經試過了。如何解析字符串以回溯? – tobias

+0

我會去與其他人推薦的長期代表。它的確是一種更簡單的方式來做到這一點。 –

+0

你說得對。但是,如何將長期價值存儲在我的數據庫中? – tobias

3

爲了擁有穩定的本地化獨立解決方案,我建議更改數據庫表以將日期存儲爲長。只要你可以得到日曆日期dateCalendar.getTimeInMillis(),當你閱讀它添加一行

long dateAsMillis; 
dateCalendar = Calendar.getInstance(); 
dateCalendar.setDate(dateAsMillis); 

但如果你真的需要/想與字符串的工作,看看DateFormat.parse(String) - 您可以定義格式你的日期應該有,因此從字符串創建一個Date對象。

+0

這是一個非常好的主意。但是,如何將「long」存儲在我的數據庫中?目前,每個條目都是「text」 – tobias

+0

將您的數據庫創建語句更改爲:(_id整數主鍵自動增量,「+」名稱文本不爲空,「+」日期長,picurl文本,.....) – sunadorer