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