我的功能有问题。我有一个函数来查找表的最大值(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);
卡住了。
希望有人能找到解决办法,谢谢;)
发布于 2015-10-26 09:50:20
rawQuery()总是返回有效的Cursor,或者抛出异常。检查null游标不是检查是否有结果的一种方法。
相反,检查moveToFirst()的结果值以检查非空游标.
还要注意,您可以完全使用SQL来完成您的工作,例如SELECT MAX(columnname)+1 FROM tablename。
发布于 2015-10-26 09:23:34
在第二个函数中总是返回2,尝试返回2的最大整数。
https://stackoverflow.com/questions/33335529
复制相似问题