티스토리 뷰
- Layout XML 정의하기
- SQLiteOpenHelper 구현하기
- 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 ArrayListselect(){ 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: ArrayListlist = dbHelper.select(); ArrayAdapter adapter; adapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1, list); s10_lv_list.setAdapter(adapter); break; default: break; } } }
참고자료
- 커스텀 리스트뷰 & 커스텀 어댑터 만들기 : 테이블 데이타를 리스트로 표현해보자~
댓글