Android 如何返回数据库中的电子邮件列表,勘误表信息

Android 如何返回数据库中的电子邮件列表,勘误表信息,android,sqlite,Android,Sqlite,如何返回列中的列表,如列中的所有电子邮件…这里是我的代码 public String reTurn() throws SQLException { String emails=null; Cursor mCursor = db.rawQuery("SELECT EmailNO FROM Details_Customer " ,null); mCursor.moveToFirst(); if(mCursor.getCount() > 0){

如何返回列中的列表,如列中的所有电子邮件…这里是我的代码

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;
  }
但它只返回一封电子邮件,我希望它返回数据库中的所有电子邮件

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
的意图中。以下是一个更好的方法:

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);

希望有帮助。

代码的问题在if语句中

emails = mCursor.getString(...);
该语句只执行一次,因此您只收到一封电子邮件

相反,尝试以下方法:

String[] emails = new String[mCursor.getCount()];
for(int i=0; i<emails.length; i++){
    emails[i] = mCursor.getString(...);
    mCursor.moveToNext();
}
String[]emails=新字符串[mCursor.getCount()];

对于(int i=0;i您可以使用以下代码获取所有邮件地址:

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();
    }
}
mCursor.moveToFirst();
ArrayList邮件=新建ArrayList();
如果(mCursor.getCount()>0){
而(!mCursor.isAfterLast()){
add(mCursor.getString(mCursor.getColumnIndex(DBAdapter.COLUMN_EMAIL));
mCursor.moveToNext();
}
}

它们都可以通过
游标使用,因为它本质上是一个迭代器。请参阅。因此,您可以像传递数组一样传递游标,并根据需要在其上进行迭代

如果确实需要,可以将结果复制到数组中:

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.
int n=mCursor.getCount();
字符串[]电子邮件=新字符串[n];
int emailColIndex=mCursor.getColumnIndex(DBAdapter.COLUMN_EMAIL);
mCursor.moveToFirst();
对于(int i=0;i
将if语句更改为一个循环以获取所有电子邮件。或者我认为您可以使用游标适配器。我该怎么做?请帮助您永远不要调用mCursor.moveToNext(),也不是循环,因此如果答案为anythingTanx,代码应该只返回1个值,但当我将其调用到活动类时,它会给我一个错误…email.putExtra(Intent.EXTRA_email,新字符串[]{dbUser.reTurned});在这一行中返回..我想我需要将数组转换为字符串,但我不知道如何再次帮助。。
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.