SQLiteOpenHelper 이용한 안드로이드 데이터베이스 관리 :: 소림사의 홍반장!

 ==> 구조

  액티비티 ----> MySQLiteHandler ----> MySQLiteOpenHelper ----> sample.sqlite
 
 ==> 순서

  가. - MySQLiteOpenHelper 클래스를 생성 (SQLiteOpenHelper 상속받아서)
       - 생성자 작성

 

  나. - MySQLiteHandler 클래스를 생성
       - public static MySQLiteHandler open(Context context) 메서드 작성
         ( 이 메서드를 통해서 MySQLiteHandler 클래스의 생성자를 불러온다 )
       - 입력, 수정, 삭제, 조회 에 해당되는 메서드 생성

 

  다. - 메인액티비티에서 MySQLiteHandler를 통해서 데이터 처리

 


< MySQLiteOpenHelper 클래스 소스 코드 > 
 public class MySQLiteOpenHelper extends SQLiteOpenHelper {
 // 데이터베이스 생성
 public MySQLiteOpenHelper(Context context, String name, CursorFactory factory,
   int version) {
  super(context, name, factory, version);
 }
 // 테이블 생성
 public void onCreate(SQLiteDatabase db) {
  Log.i("xxx", "onCreate >>>>>>>>>>>>>>>.....");
  
  String sql = "create table person ( " +
          " _id integer primary key autoincrement , " +
          " name text , " +
          " age integer , " +
          " address text )";
        db.execSQL(sql);
 }//end onCreate
 // 테이블 삭제
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  Log.i("xxx", "onUpgrade >>>>>>>>>>>>>>>.....");
  
  String sql = "drop table if exists person";
        db.execSQL(sql);
        
        onCreate(db);
 }//end onUpgrade
}//end class
  


< MySQLiteHandler 클래스 소스 코드 >  
 public class MySQLiteHandler  {
 MySQLiteOpenHelper helper;
 SQLiteDatabase db;
 
 // 초기화 작업
 public MySQLiteHandler(Context context) {
  helper = new MySQLiteOpenHelper(context, "sample.sqlite", null, 1);
 }
 
 //open
 public static MySQLiteHandler open(Context context) {
  return new MySQLiteHandler(context);
 }
 
 //close
 public void close() {
  db.close();
 }
 
 //저장
 public void insert(String name, int age, String address) {
  db = helper.getWritableDatabase();
  ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        values.put("address", address);
        db.insert("person", null, values);
 }//end insert
 
 //수정
 public void update(String name, int age) {
  db = helper.getWritableDatabase();
  ContentValues values = new ContentValues();
        values.put("age", age);
        db.update("person", values, "name=?", new String[]{name});
 }//end update
 
 //삭제
 public void delete(String name) {
  db = helper.getWritableDatabase();
        db.delete("person", "name=?", new String[]{name});
 }//end delete
 
 //검색
 public Cursor select() {
  db = helper.getReadableDatabase();
  Cursor c = db.query("person", null, null, null, null, null, null);
  return c;
 }//end select
}//end class
 


< SQLiteOpenHelperMainActivity 메인액티비티 소스 코드 > 
public class SQLiteOpenHelperMainActivity extends Activity {
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // 데이터베이스 연동
        MySQLiteHandler handler = MySQLiteHandler.open(getApplicationContext());
        
        // 데이터 저장
        handler.insert("홍길동", 20, "서울");
        handler.insert("이순신", 44, "전라");
        handler.close();
        
        // 데이터 수정
        handler.update("홍길동", 55);
        handler.close();
        
        // 데이터 삭제
        handler.delete("이순신");
        handler.close();
        
        // 데이터 검색
        Cursor c = handler.select();
        startManagingCursor(c);
        while(c.moveToNext()) {
         int _id = c.getInt(c.getColumnIndex("_id")); 
         String name = c.getString(c.getColumnIndex("name")); 
         int age = c.getInt(c.getColumnIndex("age"));
         String address = c.getString(c.getColumnIndex("address"));
         String data = _id+" "+name+" "+age+" "+address;
         Log.i("xxx", data);  //Log.i(태그, 출력텍스트) --> ddms 의 log 창에서 확인가능
        }//end while
        
        handler.close();
        
    }//end onCreate
}//end class

다른 카테고리의 글 목록

Dev. 안드로이드/참고소스 카테고리의 포스트를 톺아봅니다