无法从 android 中的数据库获取正确的 ID

cannot fetch proper id from DB in android

我从数据库中获取一行作为游标。然后想像这样获取它的 id:

String selectQuery = "SELECT * FROM " + TABLE_PEERS + " WHERE " + KEY_NAME + "= '" + peer.name +"'";
Cursor c = db.rawQuery(selectQuery, null);

Log.d("count", c.getCount()+""); // display: count: 1 in LogCat
long peer_id = c.getLong(c.getColumnIndexOrThrow(KEY_SENDER_ID)); // error occurs in this line;

总是显示错误:

Problems receiving packet: Index -1 requested, with a size of 1

当我改变时:

long peer_id = c.getLong(c.getColumnIndexOrThrow(KEY_SENDER_ID));

long peer_id = c.getColumnIndexOrThrow(KEY_SENDER_ID); Log.cat("****": peer_id+"");

LogCat 会显示 ****:0。但是它应该显示 1

任何人都可以解释导致差异的原因以及我的代码中哪里有问题吗?提前致谢。

c.getColumnIndexOrThrow(KEY_SENDER_ID); returns 您的 TABLE_PEERS 中列 KEY_SENDER_ID 的索引。

c.getLong(c.getColumnIndexOrThrow(KEY_SENDER_ID)) returns TABLE_PEERS 中列 KEY_SENDER_ID 索引处的值。

你做错了什么: 在从中获取任何数据之前,您应该调用 cursor.moveToFirst

Code Snippet:

    String selectQuery = "SELECT * FROM " + TABLE_PEERS + " WHERE " + KEY_NAME + "= '" + peer.name +"'";
    Cursor c = db.rawQuery(selectQuery, null);
    if (c != null) {    
       if (c.getCount > 0) {
         c.moveToFirst(); 
         Log.d("count", c.getCount()+""); // display: count: 1 in LogCat
         long peer_id = c.getLong(c.getColumnIndexOrThrow(KEY_SENDER_ID));
       }
    cursor.close();
    }

如果有帮助请告诉我

String selectQuery = "SELECT * FROM " + TABLE_PEERS + " WHERE " + KEY_NAME + "= '" + peer.name +"'";
        Cursor c = db.rawQuery(selectQuery, null);
        if (c.moveToFirst()) {
            long peer_id = c.getLong(c.getColumnIndexOrThrow(KEY_SENDER_ID));
            Log.d("peer_id", peer_id + "");
        }
        cursor.close();

您必须首先使用 moveToFirst() 方法。