본문 바로가기

프로그래밍/Android 짜투리 지식

[android] sqlite 사용하기

SQLite를 사용하기위해서는


1. SQLiteOpenHelper 클래스 생성

2. 생성자에 Database name를 전달함으로써 SQLiteOpenHelper안에서 서 SQLiteDatabase.openDatabase() 또는 mContext.openOrCreateDatabase()로 Database를 생성또는 다시 연다.

4. Table 생성

3. DML 구현


끗.


SQLite를 사용하는데에 SQLite 클래스 SQLiteOpenHelper

SQLite의 생성자는 

SQLiteOpenHelper(Context context, String databaseName, CursorFactory factory, int version)

onCreate()에서 SQLiteDatabase 인스턴스로 table 생성 쿼리를 실행함으로써 Table 생성


public class DBHelper extends SQLiteOpenHelper {
    private static final int VERSION = 0;
    private static final String DB_NAME = "dairy.db";
    SQLiteDatabase mDB = null;

    public DBHelper(Context context) {
        super(context, DB_NAME, null, VERSION);
        mDB = this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE schedule (_id INTEGER PRIMARY KEY AUTOINCREMENT, group_id INTEGER, title TEXT, do BOOL);");
//        db.execSQL("CREATE TABLE GROUP_ID (_id INTEGER PRIMARY KEY AUTOINCREMENT, gid INTEGER,");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          // 업그레이드 필요시 구문 작성. newVersion은 반드시 oldVersion보다 크게.
    }

    public Cursor select(String query) {
        return mDB.rawQuery(query, null);
    }
}


- SQLiteDatabase의 DML 함수


long insert(String table, String nullColumnHack, ContentValues values)

int delete(String table, String whereClause, String[] whereArgs)

int update(String table, ContentValues values, String whereClause, String[] whereArgs)


- 호출 예


String TABLE_NAME = "TEST_TABLE";
String query = "select * form " + TABLE_NAME;
ContentValues values = new ContentValues();
values.put("title", "이름");

insert(TABLE_NAME, null, values);
delete(TABLE_NAME, "_id = 0", null);
update(TABLE_NAME, values, "_id = 0", null);
      // select는 rawQuery로 대신한다.
rawQuery(query, null);

insert는 추가된 row id가 반환된다.

delete, update는 query 성공 갯수가 반환된다.

select는 결과 cursor가 반환된다.


'프로그래밍 > Android 짜투리 지식' 카테고리의 다른 글

[android] code style  (0) 2015.03.05
[android] Lollipop (v5.x) service 오류  (0) 2015.02.11
[android] google analytics froyo 문제  (0) 2015.02.10
[android] google advertising id  (0) 2014.07.02
[android] dex index  (0) 2014.06.03