Android cursor.getInt

时间:2015-10-25 21:54:12

标签: android

我遇到了一个功能问题。 我有一个函数来查找表的max(id)并且它可以正常工作,但是使用另一个表它不起作用。 首先,我的数据库:

`//MAGASIN
public static final String MAGASIN_TABLE_CREATE = "CREATE TABLE "+ MAGASIN_TABLE_NAME + " ("+
            MAGASIN_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            MAGASIN_NOM + " TEXT NOT NULL, " +
            MAGASIN_ADRESSE + " TEXT);";`

`

//LISTE`

    public static final String LISTE_TABLE_CREATE = "CREATE TABLE "+ LISTE_TABLE_NAME + " (" +
            LISTE_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT, "+
            LISTE_NAME + " TEXT NOT NULL, "+
            LISTE_DATE_CREATION + " TEXT, "+
            LISTE_DATE_LAST_MODIFICATION + " TEXT, "+
            LISTE_IS_FINAL + " INTEGER, " +
            LISTE_NUM_MAGASIN + " INTEGER, " +
            "FOREIGN KEY("+ LISTE_NUM_MAGASIN +") REFERENCES MAGASIN("+ MAGASIN_KEY +"));";

之后我的第一个功能有效:

 public int selectMaxNumMagasin()
{
    Cursor cursor = mDb.rawQuery("select numMagasin as _id from magasin order by _id desc limit 1",null);
    int max;
    if (cursor == null)
    {
        max = 1;
        return max;
    }
    else
    {
        cursor.moveToFirst();
        max = cursor.getInt(0) + 1;
        cursor.close();
        return max;
    }
}

最后一个不起作用的

`

public int selectMaxNumListe()
    {
        Cursor cursor = mDb.rawQuery("select numListe as _id from liste order by _id desc limit 1",null);
        int max;
        if (cursor == null)
        {
            max = 1;
            return max;
        }
        else
        {
            cursor.moveToFirst();
            max = cursor.getInt(0);
            max += 1;
            cursor.close();
            return max;
        }
    }`

我做了一些似乎是

的测试
  

cursor.getInt(0);

被卡住了。

希望有人能找到解决方案,谢谢;)

2 个答案:

答案 0 :(得分:0)

你在第二个函数中总是返回2,尝试返回2的最大intead

答案 1 :(得分:0)

rawQuery()始终返回有效的Cursor,或者抛出异常。检查null光标不是检查是否有结果的方法。

相反,检查moveToFirst()的结果值以检查非空光标。

另请注意,您可以完全使用SQL完成工作,例如: SELECT MAX(columnname)+1 FROM tablename