检索特定的数据列并将其存储在字符串数组中

时间:2012-12-10 02:23:56

标签: android sqlite arrays

我有一个sqlite数据库,我想检索一个特定的数据列并将其存储到一个字符串数组中。在数据库中有两列。将有多行具有相同用户名的数据,我想检索用户的“ContentPath”并将其存储到字符串数组中。但我不知道如何检索特定的列数据...

    public String[] get_contentByEmailID(String emailid){
    String[] returnMsg = null;
    helper = this.getReadableDatabase();

    Cursor c = helper.rawQuery("SELECT tableid, emailid, contentpath" +
            " from w_content where emailid='"+emailid"' ", null);



    int contentpathColumn = c.getColumnIndex("contentpath");


    if (c.moveToFirst()) {
        do {
            returnMsg = new String[2]; 

            String contentpath = c.getString(contentpathColumn);

            returnMsg[0] = emailid_sync;

            returnMsg[1] = contentpath;


        } while (c.moveToNext());
    }
    if (c != null && !c.isClosed()) {
        c.close();
    }
    if (helper!=null){
        helper.close();
    };
    return returnMsg;
}

当我调用此函数来检索数据时。它提供了emailid和contentpath。

String values[] = helper.get_contentByEmailID(SettingConstant.EMAIL);

任何意见将不胜感激。

1 个答案:

答案 0 :(得分:1)

你的数组填充了emailid和contentpath的原因是,因为你总是在每一行重置returnMsg并用这样的值填充它。由于行数会有所不同,因此通常建议您使用ArrayList,而不是构建静态长度数组。

要修复它,请更改:

String[] returnMsg = null;

为:

ArrayList<String> returnMsg = new ArrayList<String>();

然后,在do{}中,执行以下操作:

do {
    String contentpath = c.getString(contentpathColumn);
    returnMsg.add(contentpath);
} while (c.moveToNext());

最后,将return语句更改为:

return returnMsg.toArray();