안드로이드 SQLite 를 활용해야할 프로젝트가 있어 개발중,
SQLite로 작성된 (CRUD) 테이블의 내용을 눈으로 보고싶은데 볼 수 있는 방법이 없을까 하던찰나
구글링중 딱 원하는 자료가 있어서 퍼왔습니다.
출처 : http://berabue.tistory.com/51
프로젝트를 진행하다보면 데이터를 저장해야 할 때가 있다.
데이터를 저장하는 방법은 프레프런스, 파일, DB 등이 있다.
SELECT 명령을 제외한 대부분의 명령을 execSQL(String sql); 메서드로 실행 할 수 있다.
execSQL("CREATE TABLE 테이블명( _id INTEGER PRIMARY KEY AUTOINCREMENT,변수 자료형);");
_id 필드는 자동으로 값이 증가한다. 변수+자료형 필드는 콤마(,)를 사용해 여러개를 지정 할 수 있다.
레코드 추가
execSQL("UPDATE 테이블명 SET 갱신내용 WHERE 조건;");
DB_Test.java
01.
package
pe.berabue.dbtest;
02.
03.
import
android.app.Activity;
04.
import
android.os.Bundle;
05.
06.
public
class
DB_Test
extends
Activity {
07.
08.
private
DBManager mDBManager;
09.
// private SQLiteDatabase mDB;
10.
11.
/** Called when the activity is first created. */
12.
@Override
13.
public
void
onCreate(Bundle savedInstanceState) {
14.
super
.onCreate(savedInstanceState);
15.
setContentView(R.layout.main);
16.
17.
mDBManager =
new
DBManager(
this
);
18.
mDBManager.getReadableDatabase();
19.
// mDBManager.getWritableDatabase();
20.
mDBManager.close();
21.
}
22.
}
기능이 있는 화면은 아니다.
mDBManager.getReadableDatabase();
읽기전용으로 DB를 불러온다. 이 때 생성된 DB가 없으면 onCreate(); DB가 있지만 버전이 바뀌었다면 onUpgrade();를 호출한다.
mDBManager.getWritableDatabase();
읽고/쓰기가 가능하다. getReadableDatabase();과 마찬가지로 onCreate(); onUpgrade();를 호출.
mDBManager.close();
위 두 구문을 실행 한 뒤에 호출하여 DB를 닫아준다.
DBManager.java
01.
package
pe.berabue.dbtest;
02.
03.
import
android.content.Context;
04.
import
android.database.sqlite.SQLiteDatabase;
05.
import
android.database.sqlite.SQLiteOpenHelper;
06.
07.
public
class
DBManager
extends
SQLiteOpenHelper {
08.
09.
public
static
final
String DB_NAME =
"dbtest.db"
;
10.
public
static
final
int
DB_VERSION =
1
;
11.
12.
13.
public
DBManager(Context context) {
14.
super
(context, DB_NAME,
null
, DB_VERSION);
15.
}
16.
17.
@Override
18.
public
void
onCreate(SQLiteDatabase db) {
19.
db.execSQL(
"CREATE TABLE Android( _id INTEGER PRIMARY KEY AUTOINCREMENT,"
+
"name TEXT, price INTEGER);"
);
20.
db.execSQL(
"INSERT INTO Android VALUES (null, 'Cupcake' , 500 );"
);
21.
db.execSQL(
"INSERT INTO Android VALUES (null, 'Donut' , 1000 );"
);
22.
db.execSQL(
"INSERT INTO Android VALUES (null, 'Eclair' , 1500 );"
);
23.
db.execSQL(
"INSERT INTO Android VALUES (null, 'Froyo' , 10000 );"
);
24.
db.execSQL(
"INSERT INTO Android VALUES (null, 'Ginger bread' , 100000 );"
);
25.
db.execSQL(
"INSERT INTO Android VALUES (null, 'Honeycomb' , 999999 );"
);
26.
}
27.
28.
@Override
29.
public
void
onUpgrade(SQLiteDatabase db,
int
oldVersion,
int
newVersion) {
30.
// TODO Auto-generated method stub
31.
}
32.
33.
}
생성할 DB의 이름과 버전을 상수로 정의해 놓았다.
생성자에서 DB이름과 버전을 정의해 놓고 DB가 사용될때 버전이 더 높다면 onUpgrade();를 통해 내용을 수정시킬 수 있다.
db.execSQL("INSERT INTO 테이블명 VALUES (데이터);");
데이터를 삽입할때 사용하는 쿼리문.
Android 라는 테이블 하나를 생성하고 Android 테이블에 안드로이드 코드명 C ~ H의 코드네임과 멋대로 가격을 입력시켜 놓았다.
실제 단말기에서 DB를 열어보려면 루팅을 해야 하고, 에뮬레이터로 실행시키면 DDMS를 통해 DB파일이 생성되었는지 확인이 가능하다.
명령프롬프트 창을 이용해 DB를 들여다보자.
데이터베이스는 data/data/패키지명/databases 경로에 저장되어있다.
해당경로로 이동을 하고 'sqlite3 DB명'을 사용해 저장된 DB를 실행시키면 버전과 도움말을 보는 방법을 알려준다.
해당DB의 테이블을 보고싶다면 .tables를 입력한다.
위에서 생성한 Android라는 테이블과 기본적인 android_metadata라는 테이블이 존재한다.
테이블안에 들어있는 데이터를 보려면 select * from 테이블명; 을 입력한다.
입력한 그대로 1번부터 6번까지의 데이터가 출력된다.
'개발 공부 기록하기 > - Android' 카테고리의 다른 글
[안드로이드] SQLite 데이터 정보 쉽게 보기 (0) | 2016.04.26 |
---|---|
[안드로이드] adb에서 apk version 확인하기 (0) | 2016.04.26 |
[안드로이드] Fragment BackStack에 대한 고찰. (0) | 2016.03.10 |
[안드로이드] SQLite 사용하기 (2) | 2016.03.04 |
[안드로이드]액티비티 전체를 덮는 네비게이션 드로어 만들기 (0) | 2016.03.02 |