无法显示从sqlite获取的记录

时间:2011-11-15 15:10:22

标签: android sqlite cursor

我使用下面的代码从sqlite中获取特定记录。

public String getDetails(long phone) throws SQLException{
    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {NAME, AGE, AREA, PHONE, SEX}, PHONE + "=" + phone, null, null, null, null, null);
    if(mCursor != null){
        mCursor.moveToFirst();
    }
    String result = mCursor.getString(mCursor.getColumnIndex(NAME));
    return result;
}

我正在使用以下代码从另一个类调用此方法

dbAdapterExisting.read();
String temp = dbAdapterExisting.getDetails(mobile);
dbAdapterExisting.close();
textViewExistingName.setText(temp);

记录正在获取,并且能够在textview中显示“名称”字段,但我如何获取所有字段,即“年龄”,“区域”,“性别”并在不同的文本视图中显示。

2 个答案:

答案 0 :(得分:1)

如下所示。 我将展示一个做爱的例子。

String sex = mCursor.getString(mCursor.getColumnIndex(SEX));

就像你一样。 获取您使用的float,double,integer值 mCursor.getFloat /双人/整数

答案 1 :(得分:0)

由于您的getDetails()方法只返回一个字符串,并且您想要获取多个项目,因此您需要更改一些内容。 Maps是以这种方式返回数据的良好数据结构。例如:

public Map<String, Object> getDetails(long phone) throws SQLException{

    Map<String, Object> map = new HashMap<String, Object>();

    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {NAME, AGE, AREA, PHONE, SEX}, PHONE + "=" + phone, null, null, null, null, null);

    if(mCursor != null){
        mCursor.moveToFirst();
    }

    String name = mCursor.getString(mCursor.getColumnIndex(NAME));
    map.put(NAME, name);
    String age = mCursor.getString(mCursor.getColumnIndex(AGE));
    map.put(AGE, age);
    String area = mCursor.getString(mCursor.getColumnIndex(AREA));
    map.put(AREA, area);
    map.put(PHONE, phone);
    String sex = mCursor.getString(mCursor.getColumnIndex(SEX));
    map.put(SEX, sex);

    return map;

}

然后,在您的调用代码中切换到使用返回的Map:

Map<String, Object> temp = dbAdapterExisting.getDetails(mobile);
// get the name:
String name = temp.get(dbAdapterExisting.NAME);
// etc..