Android SQlite日期没有年份?

Android SQlite日期没有年份?,android,sqlite,Android,Sqlite,在我的Android应用程序中,我试图根据日期从数据库中检索字符串。但是我不希望日期中包含年份(这样我只需要有365行)。我让它工作的唯一方法是在我的数据库中,让日期列中的日期采用yyyyMMdd格式。如果我将“日期”列中的所有日期更改为MMdd格式,则两位数的月份(如10月、11月、12月)有效,但一位数的月份(如1月或9月)(01、09)会导致应用程序崩溃,并出现错误CursorIndexOutOfBoundsException:请求索引0,大小为0。我在数据库中尝试了MM-dd、yyy-M

在我的Android应用程序中,我试图根据日期从数据库中检索字符串。但是我不希望日期中包含年份(这样我只需要有365行)。我让它工作的唯一方法是在我的数据库中,让日期列中的日期采用yyyyMMdd格式。如果我将“日期”列中的所有日期更改为MMdd格式,则两位数的月份(如10月、11月、12月)有效,但一位数的月份(如1月或9月)(01、09)会导致应用程序崩溃,并出现错误
CursorIndexOutOfBoundsException:请求索引0,大小为0
。我在数据库中尝试了MM-dd、yyy-MM-dd格式,它们导致应用程序崩溃,出现上面列出的错误。在Sqlite数据库中不可能仅使用MMdd格式化日期吗?有什么想法吗

main活动:

    DBT = new SimpleDateFormat("MMdd", Locale.US);
tMMddStr = DBT.format(new Date(System.currentTimeMillis()));

private void getTH() {

    dba.open();
    tArray = dba.getTHA(tMMddStr);
    dba.close();
    optionB_TV.setText(todayArray[2]);
    hideDayAtv.setText(todayArray[1]);
    hideYearAtv.setText(todayArray[0]);

}
    public String[] getTHA(String tMMddStr) {   
    String[] columns = new String[] { KEY_Y, KEY_MD, KEY_HA };
    Cursor cursor = db.query(DB_TABLE, columns, KEY_DATE + "=" + tMMddStr,
            null, null, null, null);

    if (cursor != null) {
        cursor.moveToFirst();
        String hapT[] = new String[3];
        hapT[0] = cursor.getString(0);
        hapT[1] = cursor.getString(1);
        hapT[2] = cursor.getString(2);
        cursor.close();
        this.db.close();
        return hapT;
    }
    return null;
}
DBAdapter:

    DBT = new SimpleDateFormat("MMdd", Locale.US);
tMMddStr = DBT.format(new Date(System.currentTimeMillis()));

private void getTH() {

    dba.open();
    tArray = dba.getTHA(tMMddStr);
    dba.close();
    optionB_TV.setText(todayArray[2]);
    hideDayAtv.setText(todayArray[1]);
    hideYearAtv.setText(todayArray[0]);

}
    public String[] getTHA(String tMMddStr) {   
    String[] columns = new String[] { KEY_Y, KEY_MD, KEY_HA };
    Cursor cursor = db.query(DB_TABLE, columns, KEY_DATE + "=" + tMMddStr,
            null, null, null, null);

    if (cursor != null) {
        cursor.moveToFirst();
        String hapT[] = new String[3];
        hapT[0] = cursor.getString(0);
        hapT[1] = cursor.getString(1);
        hapT[2] = cursor.getString(2);
        cursor.close();
        this.db.close();
        return hapT;
    }
    return null;
}
此错误表示您正在尝试读取空光标,只需在尝试读取光标之前检查光标是否有任何数据:

if (cursor != null && cursor.moveToFirst()) {

至于一位数的月份问题,这可能与
KEY\u DATE
列的数据类型有关。如果
KEY\u DATE
是任何类型的数字,它将去掉第一个
0
。尝试对
tMMddStr
执行相同的操作

(如果这没有帮助,请发布您的tables CREATE语句和一些示例,说明如何将数据放入数据库并将其取出。)

您是对的!我将格式更改为Mdd,这似乎有效。我想这是我没有尝试的一个组合。