2012-06-06 88 views
0

如何在列如像在列中的所有電子郵件返回一個列表...在這裏我的代碼如何返回數據庫郵件列表,erray信息

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

但只返回一個電子郵件,我想它返回所有的郵件數據庫中的

+1

更改您的if語句成一個圈把所有的電子郵件。或者我認爲你可以使用遊標適配器。 – Ryan

+0

我該怎麼做?請幫助 – user1430923

+0

你永遠不會調用mCursor.moveToNext(),你也不會循環,所以你的代碼應該只返回1個值,如果有的話 – Guardanis

回答

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的意圖。這裏是一個更好的方法:

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

希望幫助。

+0

Tanx的答案,但是當我捆綁調用它成爲一個活動類它給我錯了...... email.putExtra(Intent.EXTRA_EMAIL,new String [] {dbUser.reTurned});在這一行返回..我想我需要將數組轉換爲字符串,但我不知道如何請再幫助一次.. – user1430923

+0

@ user1430923我更新了我的答案。 – Sam

+0

Tanx現在工作:) – user1430923

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(); 
} 
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(); 
    } 
} 
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. 
相關問題