티스토리 뷰

  1. Layout XML 정의하기
  2. SQLiteOpenHelper 구현하기
  3. Activity 생성하기

Layout XML 정의하기



  	
		    
  		>  
	
	
	    
	    
	    
	    	
	  

    


SQLiteOpenHelper 구현하기

SQLiteOpenHelper 를 상속받아서 DB에 관련된 기능을 구현한다.
public class MyDBHelper extends SQLiteOpenHelper {
    private static final String TAG = "MyDBHelper";
	private static final int DATABASE_VERSION = 1;
    private static final String DB_NAME = "db_sample10";
    
	public MyDBHelper(Context context, CursorFactory factory) {
		super(context, DB_NAME, factory, DATABASE_VERSION);

	}
	
	/**
	 * DB가 처음 만들어질 때 호출된다. 여기서 테이블을 만들고 초기 레코드를 삽입한다.   
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
	       db.execSQL("CREATE TABLE tb_sample10 (_id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , f01 TEXT, f02 DATETIME DEFAULT CURRENT_DATE)");
		
	}
	
	/**
	 * DB를 업그레이드 할 때 호출된다. 기존 테이블을 삭제하고 새로 만들거나 ALERT TABLE로 스키마를 수정한다.
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		db.execSQL("DROP TABLE IF EXISTS tb_sample10");
		onCreate(db);
		
	}
	
	/**
	 * 
	 * @return the row ID of the newly inserted row, or -1 if an error occurred 
	 */
	public long insert(String value){
		long id = -1;
		SQLiteDatabase db  = getWritableDatabase();
		ContentValues row = new ContentValues();
		row.put("f01", value);
		id = db.insert("tb_sample10", null, row);
		Log.i(TAG, "insert");
		
		return id;
	}
	
	public int update(String value, String whereClause){
		SQLiteDatabase db  = getWritableDatabase();
		ContentValues row = new ContentValues();
		row.put("f01", value);		
		Log.i(TAG, "update");
		return db.update("tb_sample10", row, whereClause, null);
	}
	
	public int delete(String whereClause){
		SQLiteDatabase db  = getWritableDatabase();
		return db.delete("tb_sample10", whereClause, null);
	}
	
	public ArrayList  select(){
		SQLiteDatabase db  = getWritableDatabase();	
		Cursor cursor ;
		ArrayList list = new ArrayList() ;

		cursor = db.rawQuery("SELECT * from tb_sample10", null)	;
		Log.i(TAG, "select");		
		
		while(cursor.moveToNext()){
			StringBuffer item = new StringBuffer()  ;
			item.append("id:").append(cursor.getInt(0));
			item.append(",f01:").append(cursor.getString(1));
			item.append(",f02:").append(cursor.getString(2));

			list.add(item.toString());
		}
		return list;
	}

}

이클립스의 File Explorer 에서 생성된 DB를 확인할 수 있다.

adb 툴을 이용항 DB를 확인할 수 있다.

Activity 생성하기

public class TestActivity extends Activity {
	MyDBHelper dbHelper;
	ListView s10_lv_list ;
	EditText s10_et_f01;
	@Override
	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.sample10_a);
		
		dbHelper = new MyDBHelper(this, null);
		s10_et_f01 = (EditText)findViewById(R.id.s10_et_f01);
		s10_lv_list = (ListView)findViewById(R.id.s10_lv_list);
		
		
		
		
	}
	
	/**
	 * 버튼 이벤트 핸들러 구현 
	 * @param v
	 */
	public void myHandler(View v){
		switch (v.getId()) {
		case R.id.s10_bnt_insert:
			dbHelper.insert(s10_et_f01.getText().toString());
			dbHelper.close();
			break;
		case R.id.s10_bnt_update:
			dbHelper.update(s10_et_f01.getText().toString(), null);
			dbHelper.close();
			break;
		case R.id.s10_bnt_delete:
			dbHelper.delete(null);
			break;
		case R.id.s10_bnt_select:
			ArrayList list = dbHelper.select();
			ArrayAdapter adapter;
			adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
			s10_lv_list.setAdapter(adapter);
			break;

		default:
			break;
		}
	}
}

참고자료

댓글