2010-06-08 2 views
0

나는 그것이 다소 쉬운 것 같지만 여전히 안드로이드 프로그래밍에 익숙하지 않으므로 인내심을 가져야한다. 내 DB의 특정 테이블에서 레코드 수 (행)를 어떻게 얻을 수 있는지 알고 싶습니다. 모든 레코드를 거쳐 특정 배열에 각 레코드를 추가하고 나중에 표시하는 루프를 만들 수 있도록이 코드가 필요합니다. 이것은 출처입니다 :SQLite db의 모든 레코드를 처리하는 방법은 무엇입니까?

db.openDataBase();   // open connection with db 

Cursor c = db.getTitle(5); // loop here through db, right now I'm fetching only one record 

startManagingCursor(c); 

//adding areas to the list here 

Area o1 = new Area(); 

o1.setOrderName(c.getString(1) + c.getString(2)); 

m_areas.add(o1); 

db.close(); 

아무도 도와 주실 수 있습니까? 미리 Thx!

+0

try 블록에'db.openDataBase();'와'db.close() '를 제외한 나머지 코드를 넣고 finally 블록에 닫기 호출을 넣는 것이 좋습니다. 코드에 예외가 발생하더라도 데이터베이스를 닫으려고 할 것입니다. – Skurmedel

답변

0

당신은 정말 얼마나 많은 최초의 수를 얻을 필요가 없습니다; 대신 모든 행을 반환하고 커서를 반환 한 다음 Cursor를 반복하는 db.getTitles() 함수를 만듭니다. 지금 당신은 아마도 SELECT ColumnA, ColumnB FROM Titles WHERE id = 5과 비슷한 쿼리를 가지고있을 것입니다. 함수를 복사하고 매개 변수를 제거한 후 WHERE 절을 제거하면 그냥 SELECT ColumnA, ColumnB FROM Titles처럼 보입니다. 함수가 모두 다음 커서의 시작 부분으로 이동 때마다, 반복 다음 항목으로가는 시작 커서를 반환하는 경우 우리는 확인

db.openDataBase(); // open connection with db 
Cursor c = db.getTitles(); 
startManagingCursor(c); 

//adding areas to the list here 
if (c != null && c.moveToFirst()) { 
    do { 
     Area o1 = new Area(); 
     o1.setOrderName(c.getString(1) + c.getString(2)); 
     m_areas.add(o1); 
    } while (c.next()); 
} 

db.close(); 

:

는 그런 다음 코드는 다음과 같을 것 을 통하여. Cursor 인터페이스에 대한 자세한 내용은 API here을 참조하거나 데이터베이스 액세스 및 관련 디자인 관행에 대해 자세히 알아 보려면 일반적으로 Notepad tutorial을 사용하는 것이 좋습니다.

1

커서의 행 수를 얻으려면 getCount을 사용하십시오.

테이블의 총 행 수를 얻으려면 reinierpost 솔루션을 사용하거나 테이블의 모든 행을 선택하고 커서에서 개수를 가져 오는 select를 수행하십시오. 당신이 실제로 테이블의 모든 행을 필요로하지 않는 한 그의 솔루션은 더 빠르다고 생각합니다.

이러한 질문은 다음과 같습니다

SELECT * FROM footable; 
관련 문제