2013-04-09 93 views
2

我使用下面的SQL語句sqlite的時間戳

private static final String DATABASE_CREATE = "create table "+ TABLE_USERLOCATION + "(" 
+ COLUMN_ID+" integer primary key autoincrement, " 
+ COLUMN_LONGITUDE +" real not null, " 
+ COLUMN_LATITUDE+" real not null, " 
+ COLUMN_TIME + " timestamp not null default current_timestamp);"; 

創建數據庫時,我嘗試通過

cursor.getColumnIndex(GPSSqliteHelper.COLUMN_TIME) 

得到COLUMN_TIME我得-1(如此明顯的錯誤)

但當我進入我的模擬器中的數據庫目錄並查看所有條目時,我看到已添加時間戳:

1 | 2.71828 | 3.14159166666667 | 2013年4月9日0時05分50秒

2 | 2.71828 | 3.14159166666667 | 2013年4月9日0時35分09秒

如何訪問的日期和原因getColumnCount()返回3而不是4?

我通過this教程(我的表創建語句基本上類似於那裏提供的那個)。

歡呼聲

+2

你是什麼'SELECT'語句或'query()'? – Sam 2013-04-09 16:25:47

+0

確保您的'COLUMN_TIME'中沒有前導空格,即'public static final String COLUMN_TIME =「time」;' – jnthnjns 2013-04-09 16:41:17

+0

該光標的查詢是什麼? – 2013-04-09 17:06:07

回答

2

肯定來不及,但如果有人來到這裏同樣的問題...

COLUMN_TIME不allColumns宣佈,它應該是:

private String[] allColumns = {GPSSqliteHelper.COLUMN_ID, GPSSqliteHelper.COLUMN_LONGITUDE, GPSSqliteHelper.COLUMN_LATITUDE, GPSSqliteHelper.COLUMN_TIME}

-3

sqlite不使用時間戳類型。你應該創建日期作爲文本。請參閱here

這就是我所做的,然後您可以根據需要在代碼中操作日期字符串。

+1

雖然它沒有在該頁面上列出,但[timestamp](https://www.sqlite.org/datatypes.html)是一個有效的SQLite數據類型。 – Sam 2013-04-09 16:55:30

+0

這在技術上是正確的,但從文檔的外觀來看,他們'鼓勵'使用它們內置的日期和時間函數,並且聲明他們沒有專門爲日期和時間留出存儲類。儘管如此,我一直使用我的日期/時間戳,因爲他們推薦並且從來沒有問題 – Tom 2013-04-09 17:00:02

+0

,我說的是SQLite3,而不是版本2,對於混淆感到抱歉 – Tom 2013-04-09 17:02:59