테스트환경: Eclipse 3.5, Android 2.2, SQLite Database Browser2.0b1
SQLite Database Browser download
http://sourceforge.net/projects/sqlitebrowser/
Android 프로그램에서 생성된 데이터베이스 파일 안에 있는 테이블 데이터를 좀더 편리하게 편집하기 위해서 SQLite Database Browser라는 툴을 사용하는 예이다. SQLite Database Browser는 Eclipse의 플러그인이 아니고 독립적인 툴이므로 압축을 해제하고 exe 파일을 찾아서 더블클릭하면 바로 실행된다. 별도의 설치하는 과정이 필요없다.
다음과 같은 순서에 따라서 작업을 진행한다.
1. Android 프로그램 내에서 DB파일과 테이블을 생성하고 프로그램 내에서 테이블에 몇개의 레코드를 입력한다.
2. DDMS Perspective를 이용하여 data/data/PROJECT_PACKAGE/database/아래에서 생성된 데이터베이스 파일을 확인한다.
3. DDMS Perspective에서 생성된 데이터베이스 파일을 선택하고 [Pull a file from the device] 아이콘을 눌러 파일을 export한다.
4. SQLite Database Browser를 실행하고 export된 데이터베이스 파일을 읽어 들인다.
5. SQLite Database Browser 로 읽어들인 데이터베이스 파일을 편집하고 저장한다.
6. DDMS Perspective에서 data/data/PROJECT_PACKAGE/database/아래에서 데이터베이스파일을 선택하고 [삭제] 아이콘을 눌러 기존 데이터베이스 파일을 삭제한다.
7. DDMS Perspective에서 data/data/PROJECT_PACKAGE/database를 선택하고 [Push a file onto the device] 아이콘을 눌러서 편집된 데이터베이스 파일을 선택하여 디바이스에 복사한다.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/
textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
SQLiteActivity.java
package com.test.sqlite;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.TextView;
public class SQLiteActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textview = (TextView) findViewById(R.id.textview);
DataBaseHelper myDbHelper = null;
myDbHelper = new DataBaseHelper(this);
SQLiteDatabase db = myDbHelper.getWritableDatabase();
// 2개의 레코드를 테이블에 입력한다
ContentValues initialValues = new ContentValues();
initialValues.put("userName", "박찬호");
db.insert("MyTable", null, initialValues);
initialValues = new ContentValues();
initialValues.put("userName", "Kim Yeon Ah");
db.insert("MyTable", null, initialValues);
db.close();
// 테이블에 저장된 모든 레코드를 가져와서 TextView에 출력한다.
db = myDbHelper.getReadableDatabase();
Cursor cursor = db.query("MyTable", new String[] {"_id","userName"},null,null,null,null,null);
if (cursor.moveToFirst())
{
do {
String str = ""+cursor.getInt(0);
str += ":"+cursor.getString(1);
str += "/ ";
textview.append(str);
} while (cursor.moveToNext());
}
db.close();
}
}
DataBaseHelper.java
package com.test.sqlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBaseHelper extends SQLiteOpenHelper{
private static String DB_NAME = "MyFirstDB.db";
private static final String TABLE_CREATE =
"create table MyTable (_id integer primary key autoincrement, "
+"userName text not null);";
public DataBaseHelper(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(TABLE_CREATE);
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
Log.i("DB Open", "DB Open OK!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w("DB Upgrade", "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS MyTable");
onCreate(db);
}
}
Eclipse에서 위와 같이 구성된 프로그램을 실행한 후에 DDMS Perspective에서 확인해보면 데이터베이스 파일(MyFirstDB.db)이 디바이스에 생성된 것을 알 수 있다. data/data/PROJECT_PACKAGE/database/MyFirstDB.db 와 같은 경로를 열어보면 다음 그림과 같이 확인된다.
데이터베이스 파일을 선택하고 우상단의 아이콘 중에서 [Pull a file from the device]를 눌러 밖으로 내 보낸다.
SQLite Database Browser를 실행하고 Open 아이콘을 눌러 앞에서 내 보낸 파일을 찾아 로드한다.
데이터베이스 파일이 SQLite Database Browser 에 로드되어 있고 프로그램이 실행되어 생성된 MyTable이 포함되어 있는 것이 확인된다.
MyTable을 선택하여 편집하기 위해 [Browse Data] 탭을 선택한다.
선택된 테이블의 내용이 보이고 새로운 레코드를 삽입하려면 우측의 [New Record] 버튼을 눌러서 작업하면 된다.
Edit 메뉴를 이용하면 테이블 생성 및 삭제, 수정 등의 작업을 할 수 있다.
[Execute SQL] 탭을 이용하면 SQL문장을 입력하여 데이터를 조작할 수 있다.
데이터 편집을 모두 마쳤다면 [SAVE] 아이콘을 눌러 변경사항을 저장하고 프로그램을 종료한다.
편집된 데이터베이스를 다시 디바이스로 복사하기 위해 기존 데이터베이스 파일을 삭제한다.
데이터베이스 파일이 디바이스에서 삭제된 것을 확인하고 [Push a file onto the device] 아이콘을 눌러 편집된 데이터베이스파일을 다시 디바이스로 복사한다.
데이터베이스 파일이 다시 디바이스에 복사되었으므로 Eclipse 에서 프로그램을 실행하여 변경사항을 확인한다