首页 > 解决方案 > 从 SQLite 表中获取价值

问题描述

我有一个名为Serverand的数据库DatabaseHelper。我正在尝试从 base 中获取价值

private DatabaseHelper db;
db = new DatabaseHelper(getActivity());
int have = db.getAxe(Column_ID);

在 DatabaseHelper 中的什么位置

public int getAxe(long id)
{
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(Server.TABLE_NAME,
            new String[]{Server.COLUMN_ID, Server.COLUMN_AXE},
            Server.COLUMN_ID + "=?",
            new String[]{String.valueOf(id)}, null, null, null, null);
    return cursor.getInt(cursor.getColumnIndex(Server.COLUMN_AXE));

}

但我得到运行时错误:

android.database.CursorIndexOutOfBoundsException: 
Index -1 requested, with a size of 1

如果需要,我可以提供Server代码,但我认为问题出在此处

标签: androidsqlite

解决方案


db.query返回一个位于索引 -1 的 NonNull 游标,您必须将其移动到 0,如果它不移动到 0,则表示不返回任何数据。

你必须cursor.moveToNext()在阅读 FIRST 位置之前打电话,之前打电话cursor.getInt()

if (cursor.moveToNext()) // if true it have data, otherwise a empty cursor was returned
   return cursor.getInt(cursor.getColumnIndex(Server.COLUMN_AXE));
else
   return -1;

还记得在读取你想要的所有内容后调用 cursor.close(),通常为:

try {
    if (cursor.moveToNext()) // if true it have data, otherwise a empty cursor was returned
       return cursor.getInt(cursor.getColumnIndex(Server.COLUMN_AXE));
    else
       return -1;
} finally {
    cursor.close();
}

推荐阅读