2011년 9월 7일 수요일

p1) cursor

수원 맛집 소스 코드의 일부이다. credits 에 toast 팝업으로 명언을 띄워주는..

DB에서 안 가지고 온 것은 애드워드 기번의 명언이 default로 나온다.


package com.b.team.food;




import java.util.*;



import android.app.*;

import android.content.*;

import android.database.*;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

import android.graphics.*;

import android.os.*;

import android.provider.*;

import android.view.*;

import android.widget.*;

import android.widget.AdapterView.OnItemClickListener;



public class FCredits extends Activity {



Context mContext;

WordDBHelper mHelper;

EditText mText;



public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mContext = this;

setContentView(R.layout.credits);

mHelper = new WordDBHelper(this); //디비에서 가지고 오는 건 쉽다.

SQLiteDatabase db = mHelper.getReadableDatabase(); // 요러면 땡

Cursor cursor;

String vRand = String.valueOf((int)(Math.random()*1617 + 561)); //명언을 랜덤하게 뽑는다.


cursor = db.rawQuery("SELECT quote, author FROM Quote WHERE _id="+vRand , null);
//쿼리 날려서 커서에 넣는다. 랜덤 아이디 것만 뽑아온다.



String Result = "";


// 커서는 배열 비스무리 한건가봐 moveToNext가 먹는걸 보니. 아님 칼럼의 내용이 하나씩 들어가나?
while(cursor.moveToNext()) {

String vQuote = cursor.getString(0);

String vAuthor = cursor.getString(1);

Result += (vQuote + "" + vAuthor +"\n");

}



if(Result.length() == 0) {

Result =("* 진보하지 않는 모든 것은 퇴보한다. 애드워드 기번 *");

}

else {

//NULL Pointer Error mText.setText(""+Result);

}



Toast.makeText(FCredits.this, (CharSequence) Result, Toast.LENGTH_LONG).show();

cursor.close();

mHelper.close();



}







class WordDBHelper extends SQLiteOpenHelper {



public WordDBHelper(Context context) {

super(context, "history.db", null, 1);

// TODO Auto-generated constructor stub

}



@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub



}



@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub



}



}



}

---------------------------------------------------------------------------------------------------
 
http://androidhuman.tistory.com/210 글이 도움이 된다.
 
커서는 쿼리(질의) 결과로 나온 레코드들을 가리키는, 말 그대로 마우스 "커서" 처럼 특정 레코드를 가리키는 역할을 합니다. 결과 레코드가 여러 개일 경우, 커서를 이리저리 움직이면서 여러 레코드들의 데이터들을 받아올 수 있습니다.




커서는 레코드를 가리키는 인터페이스 였다. 포인터도 맞는 표현일지도. 가리키는 혹은 레코드를 가리키는 주소니까... 메모리상은 아니지만.
matrixcursor는 http://susemi99.tistory.com/749 의 소스를 보면
칼럼 위치를 바꾸어서 레코드를 다시 구성할 때 쓰이는 것으로 보인다.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...