Android cursor.getInt

Android cursor.getInt,android,Android,我有一个函数的问题。 我有一个函数来查找一个表的maxid,它可以工作,但是对于另一个表它不工作。 首先,我的数据库: `//MAGASIN public static final String MAGASIN_TABLE_CREATE = "CREATE TABLE "+ MAGASIN_TABLE_NAME + " ("+ MAGASIN_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT, " + MAGASI

我有一个函数的问题。 我有一个函数来查找一个表的maxid,它可以工作,但是对于另一个表它不工作。 首先,我的数据库:

`//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);";`
`

之后,我的第一个功能开始工作:

 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;
    }
}
最后是最后一个不起作用的

`

我做了一些测试,看起来是

cursor.getInt0

它卡住了


希望有人能找到解决办法,谢谢

在第二个函数中始终返回2,尝试返回max intead of 2

rawQuery始终返回有效游标,或引发异常。检查null游标不是检查是否有结果的方法

相反,请检查moveToFirst的结果值以检查光标是否为非空


另外请注意,您可以完全使用SQL来完成工作,例如,从tablename中选择MAXcolumnname+1。

要测试此函数,它是max而不是2:所以请尝试检查ifcursor.moveToFirst{//do something},正如@laalto post上回答的那样
 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;
        }
    }`