问题描述
我的功能有问题。 我有一个函数来查找表的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);
被卡住了。
希望有人能找到解决方案,谢谢;)
1楼
您在第二个函数中始终返回2,请尝试返回最大整数2
2楼
rawQuery()
始终返回有效的Cursor
,或引发异常。
检查null
光标不是检查是否有结果的方法。
相反,请检查moveToFirst()
的结果值以检查非空游标。
还要注意,您可以完全用SQL来完成工作,例如SELECT MAX(columnname)+1 FROM tablename
。