Android结合查询

时间:2011-12-14 07:45:05

标签: android sql

我目前正在一个活动的数据库中的一个表中的两个单独的TextView中显示标题名称和描述文本。我还使用两个查询来返回标题和描述的字符串,如下面的代码所示。

有没有更好的方法,我认为我可以从单个查询返回标题和描述,但我不确定如何显示它。

致电代码:

beachName = dbBeachHelper.getBeachName(passedVar);
beachText = dbBeachHelper.getBeachText(passedVar);

查询:

public String getBeachName(String id) {
    String[] args = {id};

    Cursor c = getReadableDatabase().rawQuery("SELECT _id, BeachName FROM Beach WHERE _id=?", args);
    if(c.moveToNext()){
        return(c.getString(c.getColumnIndex("BeachName")));
    }
    c.close();
    return id;
}

public String getBeachText(String id) {
    String[] args = {id};

    Cursor c = getReadableDatabase().rawQuery("SELECT _id, BeachText FROM Beach WHERE _id=?", args);
    if(c.moveToNext()){
        return(c.getString(c.getColumnIndex("BeachText")));
    }
    c.close();
    return id;
}

非常感谢任何帮助。

干杯,

麦克

更新


我想返回一个光标,但正如我上面说的那样,当我拿回它时,我不知道该怎么做。如何将光标分成两个变量,然后我可以用它来填充TextViews ???

2 个答案:

答案 0 :(得分:1)

我坚持要更好地返回Cursor而不是String,

public Cursor getData(String id) {
    String[] args = {id};

    return getReadableDatabase().rawQuery("SELECT _id, BeachName, BeachText FROM Beach WHERE _id=?", args);

}

然后你可以从光标中获取值。

<强>更新

        Cursor c = helper.getData("your id");
        c.moveToFirst();
        if(c.getCount() > 0){
            txtName.setText(c.getString(c.getColumnIndex("BeachName")));
            txtText.setText(c.getString(c.getColumnIndex("BeachText")));
        }
        c.close();

答案 1 :(得分:1)

此方法返回两个String类型对象的数组。第一个是BeachName,第二个是BeachText

public String[] getBeachNameText(String id)
{
    String[] args = { id };
    String[] result = new String[2];

    Cursor c = getReadableDatabase().rawQuery("SELECT _id, BeachName, BeachText FROM Beach WHERE _id=?", args);
    if (c.moveToNext())
    {
        result[0] = c.getString(c.getColumnIndex("BeachName"));
        result[1] = c.getString(c.getColumnIndex("BeachText"));
    }
    c.close();
    return result;
}