我有一个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);
任何意见将不胜感激。
答案 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();