2013. 5. 10. 11:42

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

   

   

public class NotesDbAdapter {

   

    public static final String KEY_KEYWORD = "keyword";//추가를 원하는 개체만큼 추가한다. 이후 ....붙은 곳은 전부 동일하게 추가한다.

...

    public static final String KEY_ROWID = "_id";

   

    private static final String TAG = "NotesDbAdapter";

    private DatabaseHelper mDbHelper;

    private SQLiteDatabase mDb;

   

    /**

     * Database creation sql statement

     */

    private static final String DATABASE_CREATE =

"create table notes (_id integer primary key autoincrement, "

            + "keyword text not null, ......);";

   

    private static final String DATABASE_NAME = "data";

    private static final String DATABASE_TABLE = "notes";

    private static final int DATABASE_VERSION = 1;

   

    private final Context mCtx;

   

    private static class DatabaseHelper extends SQLiteOpenHelper {

   

        DatabaseHelper(Context context) {

            super(context, DATABASE_NAME, null, DATABASE_VERSION);

        }

   

        @Override

        public void onCreate(SQLiteDatabase db) {

   

            db.execSQL(DATABASE_CREATE);

        }

   

        @Override

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

            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "

                    + newVersion + ", which will destroy all old data");

            db.execSQL("DROP TABLE IF EXISTS notes");

            onCreate(db);

        }

    }

   

    public NotesDbAdapter(Context ctx) {

        this.mCtx = ctx;

    }

   

    public NotesDbAdapter open() throws SQLException {

        mDbHelper = new DatabaseHelper(mCtx);

        mDb = mDbHelper.getWritableDatabase();

        return this;

    }

   

    public void close() {

        mDbHelper.close();

    }

   

    public long createNote(String keyword, ...) {

        ContentValues initialValues = new ContentValues();

        initialValues.put(KEY_KEYWORD, keyword);

....

   

        return mDb.insert(DATABASE_TABLE, null, initialValues);

    }

   

    public boolean deleteNote(long rowId) {

   

        Log.i("Delete called", "value__" + rowId);

        return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;

    }

   

    public Cursor fetchAllNotes() {

   

        return mDb.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_KEYWORD,.... }, null, null, null, null, null);

    }

   

    public Cursor fetchNote(long rowId) throws SQLException {

   

        Cursor mCursor =

   

        mDb.query(true, DATABASE_TABLE, new String[] { KEY_ROWID, KEY_KEYWORD,....}, KEY_ROWID + "=" + rowId, null, null, null, null,

                null);

        if (mCursor != null) {

            mCursor.moveToFirst();

        }

        return mCursor;

   

    }

   

    public boolean updateNote(long rowId, String keyword) {

        ContentValues args = new ContentValues();

        args.put(KEY_KEYWORD, keyword);

......

   

        return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;

    }

}



각 기능은 함수명으로 알아볼 수 있다.


간단한 사용법


private DbAdapter dbAdapter;


...


dbAdapter = new NotesDbAdapter(this);

dbAdapter.open();


dbAdapter.createNote("keyword", .....);


Cursor result = dbAdapter.fetchAllNotes();

result.moveToFirst();


while(!result.isAfterLast()){

String keyword = result.getString(1);

.....

//여기서 가져온 내용으로 각종 처리(출력,Array에 입력 등등)

result.moveToNext();


}

result.close();

Posted by newkie