我使用下面的代码从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中显示“名称”字段,但我如何获取所有字段,即“年龄”,“区域”,“性别”并在不同的文本视图中显示。
答案 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..