2011-01-30 8 views
3

꽤 쉬운 일이지만, 커서에서 반환 된 데이터를 다른보기에 적용하는 모든 예제가 혼란 스러워요. 그냥 rawquery를 실행하고 반환 된 각 데이터 항목을 float 배열에 넣으려고합니다. (나중에 추가 할 수 있도록). 이것을 위해 무엇을 사용해야합니까? 감사SQLite 데이터베이스의 데이터를 안드로이드의 배열로 가져 오는 방법은 무엇입니까?

+1

입니다. budgetInArray를 초기화하는 것을 잊었습니까? (아마도 "numRows = incomeCursor.getCount()"행 바로 다음에 수행하려는 것일 수 있습니다)? –

+0

네, 그게 정확히 문제 였어요,저기서 나 자신 있어요 .-_- 그것을 지적 해 주셔서 고마워요. :) – Holly

답변

9

당신이 당신의 데이터베이스를 쿼리 할 때 당신은 여전히 ​​커서를해야합니다,하지만 당신은 커서를 도착 했더라면이 같은, 당신은 배열에 필요한 값을 잡아 당겨, ​​그것을 반복 수 :

DbAdapter db = new DbAdapter(mContext); 
    int columnIndex = 3; // Whichever column your float is in. 
    db.open(); 
    Cursor cursor = db.getAllMyFloats(); 
    float[] myFloats = new float[cursor.getCount()-1]; 

    if (cursor.moveToFirst()) 
    {      
     for (int i = 0; i < cursor.getCount(); i++) 
     { 
      myFloats[i] = cursor.getFloat(columnIndex); 
      cursor.moveToNext(); 
     }   
    } 
    cursor.close(); 
    db.close(); 

    // Do what you want with myFloats[]. 
+0

아, 아주 고마워요! 이해할 수없는 유일한 점은 columnIndex를 사용해야한다는 것입니다. 내가 그 방법을 들여다 보면 내가 알아낼 것 같아. 실제 rawQuery가 getAllMyFloats에서 올바르게 처리된다고 가정합니다. 건배 정말 도움이되었습니다. – Holly

+0

또 다른 한가지는 0 또는 1의 인덱스에서 열을 시작합니까? – Holly

+1

여러 개의 열이있는 테이블이있는 경우 원하는 특정 데이터 필드를 가져 오기 위해 열 인덱스가 필요합니다. 열의 인덱스는 0입니다. –

3

(int i = 0)이거나 0부터 시작하기 때문에 float[] myFloats = new float[cursor.getCount()-1];에서 1을 뺀 것이 아닙니다. 사용하는 경우 Java.lang.IndexOutOfBoundsException이 표시됩니다. [cursor.getCount()-1]까지 배열 인덱스가 [cursor.getCount()]까지 필요합니다. 올바른 것은 float[] myFloats = new float[cursor.getCount()];

관련 문제