2014-01-22 52 views
-1

在我的代碼,當光標爲null我遇到的CursorIndexOutOfBoundsException Index 0 requested, with a size of 0 in AndroidCursorIndexOutOfBoundsException的Android

的例外,我怎樣才能解決這個問題?

public Cursor getCustAccount(long custRef){ 
    openReadable(); 
    Cursor cursor; 
    cursor = database.rawQuery(" SELECT CustAccountId AS _id,AccountNo as AccountNo,BankName as BankName,BranchName as BranchName FROM tblCustAccount WHERE CustRef =" + custRef , null); 

    if (cursor != null) 
     cursor.moveToFirst(); 

    return cursor; 
} 

public ArrayList<String> getCustAccountString(long custRef) { 
    Cursor cursor = getCustAccount(custRef); 

    ArrayList<String> listAccount = new ArrayList<String>(); 

    do { 
     listAccount.add(String.valueOf(cursor.getInt(1))); 

    } while(cursor.moveToNext()); 

    return listAccount; 
} 
+0

如果'cursor'用'null'等於那麼你的應用程序必須拿到'Exception' –

+0

FYI:把你的問題的標題在搜索引擎,這樣就造成同許多職位都有正確的解決方案。 – laalto

回答

1

遊標中沒有數據。你應該檢查moveToFirst()之前任何get...()通話成功:

if (cursor.moveToFirst()) { 
    do { 
    listAccount.add(String.valueOf(cursor.getInt(1))); 
    } while(cursor.moveToNext()); 
} 
+0

'如果(cursor.moveToFirst)返回遊標,否則返回null',如果你返回null,那麼它會涉及其他問題。所以真正的問題是查詢din't成功和光標不指向第一行! – Raghunandan

+0

@Raghunandan是的,並沒有暗示返回null,並增加了一個例子來澄清。 – laalto

+0

是的,我明白我發表了一條評論,讓它澄清。我只是好奇其他部分 – Raghunandan

0

用途: -

if(cursor != null && cursor.moveToFirst()){ 
    return cursor; 
    } 
    return null; 

public abstract boolean moveToFirst() 

將光標移動到第一行。

如果光標爲空,此方法將返回false。

返回 此舉是否成功。

+0

返回一個'null'會導致後面的OP的代碼,其他問題,如NPE。 。? – laalto

+0

@laalto您可以檢查null,則然後返回簡單ArrayList對象沒有進入 –

+0

它一點兒也不作品同樣的問題 – Sanaz

0

試試下面的代碼:

if (cursor.getCount() > 0) { 
    do { 
     listAccount.add(String.valueOf(cursor.getInt(1))); 

    } while(cursor.moveToNext()); 
} 
相關問題