2011-11-14 1 views
0

커서를 사용하여 데이터베이스에서 값을 가져올 때 안드로이드 데이터베이스 애플 리케이션을 만들고 있어요 그것은 다음과 같은 예외를 제공합니다.안드로이드 : java.lang.IllegalStateException : 행 0 열 -1에서 필드 슬롯을 얻지 못했습니다

java.lang.IllegalStateException: get field slot from row 0 col -1 failed 

나는 페치에 대해 다음 코드를 사용하고 있습니다 :

public Cursor fetchChildren(String KEY_){ 

      Cursor c = db.rawQuery("SELECT children FROM " + DATABASE_TABLE_NAVIGATION 
        + " WHERE key_ = ?", new String[] {KEY_}); 
       return c; 
      } 



    try{ 
    for(int k=0;k<n;k++){ 
     db.open(); 
    System.out.println("children are"); 
     Cursor cursor=db.fetchChildren(keys_a); 
     if (cursor.moveToFirst()) // data? 
      { 
     System.out.println(cursor.getString(9)); 
    } 
    } 
db.close(); 
    } 
    catch(Exception e) 
    { 
    System.out.println(e); 
     } 
+0

왜 모든 반복마다'db'를 여는 중입니까? –

+0

비록 그것을 열지 않는다면 나에게 같은 예외를 준다. – ekjyot

답변

4

사용 System.out.println(cursor.getString(0)) 대신 System.out.println(cursor.getString(9));

또는 당신의 논리에 System.out.println(cursor.getString(cursor.getColumnIndex("children"));

문제를 사용

데이터베이스에서 단일 열을 가져 오는 중입니다. 따라서 하나의 열 (자식) 만 갖는 커서. 열 인덱스가 0에서 시작한다는 것을 알고 있으므로 (첫 번째 열은 0, 두 번째 열은 1 ...), getString()에 0을 전달해야합니다. 다른 방법은 커서 인덱스를 검색하여 getString()으로 전달하는 것입니다. getColumnIndex(java.lang.String) 커서의 열 이름 인덱스를 계산하고 getString(int) 내에서 사용하십시오.

희망이 도움이 될 것입니다.

+0

고마워 @Pankaj 쿠마르 – ekjyot

+0

나는 이미 upvoted있다 :) – ekjyot

관련 문제