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