2012-08-11 24 views
1

我以我的數據庫格式「MM/dd/yyyy」存儲日期,我想按特定日期進行查詢,但是當我進行查詢時,遊標不返回任何內容。使用包含「/」的字符串查詢數據庫

是因爲字符串或其他內容中的「/」嗎?是的,我知道日期是否正確存儲在數據庫中

@Override 
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { 
     return new CursorLoader(getActivity(),Games.GAMES_URI,new String[] {Games.GAMES_ID},Games.GAMES_DATE + "="+dt, 
       null,null); 
} 

轉換日期

public convertDate(Calendar date){ 
     mDate = date;   
     Date d = new Date(date.getTimeInMillis()); 
     DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
     dt = df.format(d); 
} 
+0

請發佈顯示您的查詢的代碼。 – CommonsWare 2012-08-11 21:10:02

+0

更新了代碼 – tyczj 2012-08-11 21:11:10

回答

1

你正在嘗試做的看起來像查詢:

... WHERE games_date=08/11/2012 

需要它成爲:

... WHERE games_date="08/11/2012" 

(假設games_date是列的名稱 - 根據需要替換)

嘗試Games.GAMES_DATE + "=?"您的第四CursorLoader構造函數的參數,並{dt}你第五CursorLoader構造函數的參數,和Android/SQLite的會自動添加引號爲你需要的地方,假設你的ContentProvider由SQLite支持。

此外,您可能會考慮以其他格式存儲您的日期。如果你想要它是一個字符串,yyyy-MM-dd(或yyyy/MM/dd)是一個更好的選擇,因爲它會按時間順序正確排序。如果你不需要它是一個字符串,只需將getTimeInMillis()存儲在INTEGER列中,可以更容易地將對象轉換爲Date或從Date轉換而來,而不會影響字符串轉換。

+0

我做了這個改變,但它仍然沒有返回任何東西,我不需要是一個字符串我使用了一個字符串,因爲因爲我使用'System.getCurrentTimeMillis()'獲取日期,那麼當我查詢我時必須不僅有日期,還有時間來匹配從'System.getCurrentTimeMillis()'存儲的工廠' – tyczj 2012-08-11 21:44:54

+0

@tyczj:對不起,但我不知道該告訴你什麼。 'dt'是錯的,或者你的數據是錯的,或者你的'ContentProvider'實現中的東西是錯誤的。 – CommonsWare 2012-08-11 22:05:32