当前位置: 代码迷 >> Android >> Android cursor.getInt
  详细解决方案

Android cursor.getInt

热度:58   发布时间:2023-08-04 12:17:30.0

我的功能有问题。 我有一个函数来查找表的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,请尝试返回最大整数2

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

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

还要注意,您可以完全用SQL来完成工作,例如SELECT MAX(columnname)+1 FROM tablename

  相关解决方案