[SQL] 안드로이드 cursor.moveToNext ()?
SQL안드로이드 cursor.moveToNext ()?
나는 하나 개의 긴 텍스트보기 및 / 또는 문자열로 테이블의 모든 열을 조회하려합니다. 나는이 일을하는 올바른 방법으로하지 않을 수 있습니다 알고 있지만 나는이 작업을 수행 할 수 있습니다. 만약 내가 잘못 올바른 나, 나는 움직임 다음은 행의 다음 열을 얻을 것이라는 인상했다 :
Cursor c = db.get();
if(c.moveToFirst){
do{
string = c.getString(0);
}while(c.moveToNext);
나는 이것이 첫 번째 열을 얻을 대신 내가 처음 열과 첫 번째 행을 얻을 모든 내용을 표시 할 것이라고 생각했다. 내가 뭘 잘못하고 있죠? ListView를 사용하지 않고이 정보를 얻을 수있는 더 나은 또는 실제 방법이 있나요?
해결법
-
==============================
1.관심있는 I 신뢰를 다음과 같이 명확하게하기 위해 완벽한 예로들 수 있습니다. 코드 주석 우리가 본질적으로 데이터베이스 행 다음 열을 반복 바와 같이 데이터베이스에 따라 데이터의 테이블을 형성한다.
관심있는 I 신뢰를 다음과 같이 명확하게하기 위해 완벽한 예로들 수 있습니다. 코드 주석 우리가 본질적으로 데이터베이스 행 다음 열을 반복 바와 같이 데이터베이스에 따라 데이터의 테이블을 형성한다.
Cursor cursor = getActivity().getContentResolver().query(uri, projection, null, null, null); //if the cursor isnt null we will essentially iterate over rows and then columns //to form a table of data as per database. if (cursor != null) { //more to the first row cursor.moveToFirst(); //iterate over rows for (int i = 0; i < cursor.getCount(); i++) { //iterate over the columns for(int j = 0; j < cursor.getColumnNames().length; j++){ //append the column value to the string builder and delimit by a pipe symbol stringBuilder.append(cursor.getString(j) + "|"); } //add a new line carriage return stringBuilder.append("\n"); //move to the next row cursor.moveToNext(); } //close the cursor cursor.close(); }
-
==============================
2.간단한 사용은 다음과 같습니다
간단한 사용은 다음과 같습니다
Cursor cursor = db.query(...); while (cursor.moveToNext()) { ... }
당신은 당신이 이미 어떤 위치에 도달 한 후 처음부터 반복하는 시작해야 할 때 moveToFirst이 사용됩니다.
이 필요한 경우를 제외하고 cursor.getCount ()를 사용하지 마십시오. 그리고 getCount를 통해 루프를 사용하지 않습니다 ().
getCount 비싼 - 그것은 그들을 계산하는 많은 레코드 반복 할. 이 저장된 변수를 반환하지 않습니다. 이 두 번째 통화에 대한 몇 가지 캐싱 할 수 있지만,이 계산 될 때까지 첫 번째 호출은 답을 알고하지 않습니다.
쿼리 1000 개 행이 일치하는 경우, 커서는 실제로 첫 번째 행이 있습니다. 각 moveToNext 검색 및 발견 다음 경기. getCount는 모두 1000 찾아야 왜으로 반복 모든 것을 당신이 10 필요하다면? 왜 반복 처리를 두 번?
쿼리가 인덱스를 사용하지 않는 경우에도, getCount도 느려질 수 있습니다 - getCount는 쿼리가 100 왜 루프 20000 대신 10000의 일치에도 불구하고 만 개 기록을 통해 갈 수있다?
-
==============================
3.이 같은 커서를 통해 내 루프를하고있는 중이 야 :
이 같은 커서를 통해 내 루프를하고있는 중이 야 :
cursor.moveToFirst(); while(!cursor.isAfterLast()) { cursor.getString(cursor.getColumnIndex("column_name")); cursor.moveToNext(); }
그것은 항상 작동합니다. 이 모든 행의 열 "COLUMN_NAME"의 값을 검색합니다. 귀하의 실수는 행이 아닌 컬럼을 통해 당신이 루프입니다. 열 반복 할
cursor.moveToFirst(); for(int i = 0; i < cursor.getColumnNames().length; i++){ cursor.getString(i); }
즉 의지의 첫 번째 행의 열 위에 루프와 각 열의 값을 검색한다.
-
==============================
4.다음 행으로 커서를 이동 moveToNext. 존재하는 경우와 c.getString (0)는 항상 당신에게 첫 번째 열을 줄 것이다. 나는 당신이 당신의 루프 내에서 이와 비슷한 일을해야한다고 생각
다음 행으로 커서를 이동 moveToNext. 존재하는 경우와 c.getString (0)는 항상 당신에게 첫 번째 열을 줄 것이다. 나는 당신이 당신의 루프 내에서 이와 비슷한 일을해야한다고 생각
int index = c.getColumnIndex("Column_Name"); string = c.getString(index);
-
==============================
5.cursor.moveToFirst ()이 첫 번째 행에 커서를 이동시킨다. 당신이 6 열이 있음을 알고, 당신은 모든 열을 포함하는 하나의 문자열을 원하는 경우, 다음을 시도해보십시오.
cursor.moveToFirst ()이 첫 번째 행에 커서를 이동시킨다. 당신이 6 열이 있음을 알고, 당신은 모든 열을 포함하는 하나의 문자열을 원하는 경우, 다음을 시도해보십시오.
c.moveToFirst(); StringBuilder stringBuilder = new StringBuilder(); for(int i = 0; i < 6; i++){ stringBuilder.append(c.getString(i)); } // to return the string, you would do stringBuilder.toString();
from https://stackoverflow.com/questions/10081631/android-cursor-movetonext by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 테이블에 Active Directory 데이터 (0) | 2020.07.06 |
---|---|
[SQL] 자신의 SQL Server 2005의 책과 SQL 서버 2008 책에 Itzik 벤 웨이 코 뮤니시의 논리 질의 처리 순서에 대해 혼란 (0) | 2020.07.06 |
[SQL] 안드로이드 - 어떻게 내 응용 프로그램에서 만든 SQL 데이터베이스를 볼 수 있나요? 나는 이클립스에서 안드로이드 에뮬레이터를 실행 해요 (0) | 2020.07.06 |
[SQL] 정확한 배수 관계가 존재 SQL 만 선택 행 (0) | 2020.07.06 |
[SQL] 결정 요인 및 후보 키 동일하거나 다른 일이 있습니까? (0) | 2020.07.06 |