Java 从SQL数据库返回单个列值
我需要从数据库中获取最新条目,但不需要自动增量。 此函数位于我的databasehandler中:Java 从SQL数据库返回单个列值,java,android,mysql,sql,sqlite,Java,Android,Mysql,Sql,Sqlite,我需要从数据库中获取最新条目,但不需要自动增量。 此函数位于我的databasehandler中: public int getLatestRouteNumber() { int number = 0; SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT MAX("+ KEY_ROUTENUMBER + ") FROM " + TABLE_LOCATIONS; Cursor
public int getLatestRouteNumber()
{
int number = 0;
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT MAX("+ KEY_ROUTENUMBER + ") FROM " + TABLE_LOCATIONS;
Cursor c = db.rawQuery(query, null);
if (c.moveToFirst() && c != null) {
number = c.getInt(3);
}
return number;
}
它在“number=c.getInt(3)”的行处出现突变。
我的数据库中存在第三列,其中包含数据
我得到的错误是“无法从CursorWindow读取第0行第3列。在访问数据之前,请确保光标已正确初始化。“我只需要整个数据库中的一个值,甚至不需要整行。在您的情况下,返回的结果集与表列无关。您应该使用
number = c.getInt(0);
你的结果集只包含一列和一行,基本上是一个标量值,你的表中有多少列并不重要,你应该考虑的是你从你的查询中获得的值,在你的情况下只有一个值。
getInt(0)
你有没有试过这样的方法:
String query = "SELECT MAX("+ KEY_ROUTENUMBER + ") as my_max FROM " + TABLE_LOCATIONS;
以及:
columnIndex = c.getColumnIndexOrThrow("my_max");
number = c.getInt(columnIndex );
这比使用索引要好,如果原始查询发生更改,索引可能会出错。getInt(3)返回查询返回的第3列的值。您的查询只有1列
将getInt(3)更改为getInt(0)“c.getInt(3);不是从表中的列获取值,而是从游标中的列获取值
您只在光标中选择了一列
所以我认为应该是“c.getInt(1);“光标中只有一列,但试图获取第三列的值…Tat是错误
将其更改为getInt(0);我认为这里的索引应该是0。根据经验和文档,列索引是基于1的。因此索引应该是1。请参阅这里的文档: