我有一个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);


任何意见将不胜感激。

最佳答案

之所以用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();

10-05 20:54
查看更多