如何在列中返回列表,例如列中的所有电子邮件...这里是我的代码
public String reTurn() throws SQLException
{
String emails=null;
Cursor mCursor = db.rawQuery("SELECT EmailNO FROM Details_Customer " ,null);
mCursor.moveToFirst();
if(mCursor.getCount() > 0){
emails= mCursor.getString(mCursor.getColumnIndex(DBAdapter.COLUMN_EMAIL));
//password = mCursor.getString(11);
}
return emails;
}
但它只返回一封电子邮件,我希望它能够返回数据库中的所有电子邮件
答案 0 :(得分:1)
试试这个:
public List<String> reTurn() throws SQLException
{
List<String> emails = new ArrayList<String>();
Cursor mCursor = db.rawQuery("SELECT EmailNO FROM Details_Customer ", null);
int index = mCursor.getColumnIndex(DBAdapter.COLUMN_EMAIL);
while(mCursor.moveToNext()) {
emails.add(mCursor.getString(index));
//password = mCursor.getString(11);
}
return emails;
}
从评论中添加
由此:
email.putExtra(Intent.EXTRA_EMAIL, new String[]{ dbUser.reTurned});
我想您正在尝试将电子邮件地址数组放入名为email
的Intent中。这是一个更好的方法:
public String[] reTurn() throws SQLException
{
Cursor mCursor = db.rawQuery("SELECT EmailNO FROM Details_Customer ", null);
String[] emails = new String[mCursor.getCount()];
int i = 0;
int index = mCursor.getColumnIndex(DBAdapter.COLUMN_EMAIL);
while(mCursor.moveToNext()) {
emails[i++] = mCursor.getString(index);
//password = mCursor.getString(11);
}
return emails;
}
并将其置于意图中:
email.putExtra(Intent.EXTRA_EMAIL, dbUser.reTurned());
最后,在您的新活动中,请阅读电子邮件数组:
String[] emails = getIntent().getStringArrayExtra(Intent.EXTRA_EMAIL);
希望有所帮助。
答案 1 :(得分:0)
您的代码存在于if语句中。
emails = mCursor.getString(...);
该声明仅执行一次,因此您只能收到一封电子邮件。
而是尝试类似:
String[] emails = new String[mCursor.getCount()];
for(int i=0; i<emails.length; i++){
emails[i] = mCursor.getString(...);
mCursor.moveToNext();
}
答案 2 :(得分:0)
您可以使用以下代码获取所有邮件地址:
mCursor.moveToFirst();
ArrayList<String> mails = new ArrayList<String>();
if(mCursor.getCount() > 0){
while(!mCursor.isAfterLast()){
mails.add(mCursor.getString(mCursor.getColumnIndex(DBAdapter.COLUMN_EMAIL)));
mCursor.moveToNext();
}
}
答案 3 :(得分:0)
它们都可以通过Cursor
获得,因为它本质上是一个迭代器。见the Cursor API。因此,您可以像传输数组一样传递光标,并根据需要迭代它。
如果真的有必要,可以将结果复制到数组中:
int n = mCursor.getCount();
String [] emails = new String[n];
int emailColIndex = mCursor.getColumnIndex(DBAdapter.COLUMN_EMAIL);
mCursor.moveToFirst();
for (int i = 0; i < n; i++) {
emails[i] = mCursor.getString(emailColIndex);
mCursor.moveToNext();
}
// A good place to close the cursor.