0

在我的 Android 应用程序中,我试图根据日期从我的数据库中检索一个字符串。但我不想要日期中的年份(那样我只需要 365 行)。我让它工作的唯一方法是在我的数据库中,让日期列中的日期采用 yyyyMMdd 格式。如果我将“日期”列中的所有日期更改为 MMdd 格式,则两位数月份(如 10 月、11 月、12 月)有效,但单位数月份如 1 月或 9 月(01、09)会使应用程序崩溃与错误CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0。我已经在数据库中尝试了 MM-dd、yyyy-MM-dd 格式,但它们使应用程序因上面列出的错误而崩溃。在 Sqlite 数据库中是否不能仅使用 MMdd 格式化日期?有任何想法吗?

主要活动:

    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;
}
4

1 回答 1

1
CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

此错误表示您正在尝试读取光标,只需在尝试读取之前检查光标是否有任何数据:

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

至于个位数月份问题,这可能与KEY_DATE列的数据类型有关。如果KEY_DATE是任何类型的数字,它将去掉第一个0. 尝试对tMMddStr.
(如果这没有帮助,请发布您的表 CREATE 语句和一些如何将数据放入数据库并将其拉出的示例。)

于 2012-12-04T23:13:21.740 回答