我不明白这个return语句的行为

时间:2014-11-28 07:34:26

标签: java

请看一下

public String getDateAndTime(long rowid){
    CustomSQLiteOpenHelper helper = new CustomSQLiteOpenHelper(context);
    this.db = helper.getWritableDatabase();
    Cursor cursor = db.
              rawQuery("select created from testRecords where rowid = ?", new String[] { Long.toString(rowid) }); 
    if (cursor != null)
        {
        cursor.moveToFirst();
        String datandtime= null;
        datandtime=cursor.getString(0);
        db.close();
        return datandtime;
        }
    db.close();    
    return null;

}

现在我明显地忽略了一些重要的事情:

如果光标不为null,我希望整个metod返回datandtime

但它不会发生这样的事情:

如果游标不为null,则继续执行并转到结束return null

返回null。

请问我在这里错过了什么?


请,为何关闭???

5 个答案:

答案 0 :(得分:1)

cursor.getString(0)更改为cursor.getString(1)。数据库列始终从1计算,而不是0

答案 1 :(得分:0)

如果cursor不为null,则返回datandtime并在此处停止。所以它不执行这一行:return null;

答案 2 :(得分:0)

它对数据库进行了查询,并将结果放入游标中。 如果结果与null不同,则cursor从查询中获取第一个String的值并返回它。 另一方面,如果cursor的结果为null,则return语句为null。

有一个很好的代码!

答案 3 :(得分:0)

简单地说:

cursor.getString(0)为null

答案 4 :(得分:0)

请尝试这样:

public String getDateAndTime(long rowid){
    CustomSQLiteOpenHelper helper = new CustomSQLiteOpenHelper(context);
    String datandtime= null;
    this.db = helper.getWritableDatabase();
    Cursor cursor = db.
              rawQuery("select created from testRecords where rowid = ?", new String[] { Long.toString(rowid) }); 
    if (cursor != null)
        {
        cursor.moveToFirst();
        datandtime=cursor.getString(0);
        }
    db.close();    
    return datandtime;

}