Java 从SQL数据库返回单个列值

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

我需要从数据库中获取最新条目,但不需要自动增量。 此函数位于我的databasehandler中:

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。请参阅这里的文档: