使用包含“/”的字符串查询数据库

时间:2012-08-11 21:08:07

标签: android sqlite

我以数据库格式“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);
}

1 个答案:

答案 0 :(得分: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个对象,而不会干扰字符串转换。