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



如何在列中返回列表,例如像列中的所有电子邮件一样...这是我的代码

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.putExtra(Intent.EXTRA_EMAIL, new String[]{ dbUser.reTurned});

我猜您正在尝试将电子邮件地址数组放入名为 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();
}

您可以使用如下代码来获取所有邮件地址:

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

它们都可以通过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.

相关内容

  • 没有找到相关文章

最新更新