1
2
3
4
5
6
7
8
9
10
11
12
|
//SQLiteDatabase 변수
SQLiteDatabase db=null;
//파일 경로와
File file=new File(getFileDir(),"student.db");
try {
db=SQLiteDatabase.openOrCreateDatabase(file,null);
//student.db 데이터 베이스가 있으면 열고 없으면 생성.
} catch(SQLiteException e) {
e.printStackTrace();
}
|
cs |
(->추후 SQLiteOpenHelper를 extends한 class로 데이터베이스 관련 함수,변수 관리)
만든 db 파일에 테이블을 만들기
|
//db파일에 student 테이블이 없으면 테이블을 생성하는 쿼리
String dbCreateQuery= "CREATE TABLE IF NOT EXISTS student (NO INTEGER, NAME TEXT)";
//쿼리를 실행하는 execSQL 함수
db.execSQL(dbCreateQuery) ;
|
cs |
NO, NAME 2가지 Column이 있는 student 테이블을 만들어 보았습니다.
이런식으로 String에 쿼리는 만들고 execSQL함수로 쿼리는 실행하는 원리는 통하여
추가(Insert), 수정(Update), 삭제(Delete) 를 할 수 있습니다.
2. 조회
데이터 베이스의 조회문에는 Select가 있습니다.
execSQL함수는 조회된 값을 반환하지 않기 때문에 다른 함수를 사용해야합니다.
이때 사용하는 함수인 query와 rawQuery를 사용할 수 있습니다.
- rawQuery("쿼리","쿼리에 들어갈 변수 args");
예) 컬럼 NO,Name으로 NO가 2이고 NAME이 David인 값을 찾습니다.
|
Cursor cur=db.rawQuery("SELECT NO, NAME FROM student WHERE NO = ? AND NAME = ?", new String[] {"2", "David"}); |
cs |
- query("테이블", Columns,"선택 값", "선택값 배열","그룹","조건절","정렬");
예) 컬럼 NO,NAME으로 NO가 1인 값을 찾습니다.
|
Cursor cur = db.query("student", new String[]{NO,NAME}, "NO=?", new String[]{"1"}, null, null, null); |
cs |
반환된 select된 값의 위치정보를 접근할 수 있는 것이 바로 Cursor 인스턴스입니다.
Cursor을 이용한 함수
- getCount() : 전체 결과가 몇개인지 확인.
- MoveToFirst() : 첫번째 결과를 반환.
- MoveToNext() : 다음 값을 반환.
- getColumnNames() : 결과에 포함한 전체 컬럼 이름.
- requery() : 쿼리 재실행.
- close() : 커서가 확보한 자원을 모두 해제.
예) NAME이 David인 결과를 찾고 결과 값들을 차례대로 로그출력
1
2
3
4
5
6
7
8
9
10
11
12
13
|
String sqlSelect = "SELECT * FROM student WHERE NAME=?" ;
Cursor cursor = sqliteDB.rawQuery(sqlSelect,new String[]{"David"}) ;
while (cursor.moveToNext()) {
// INTEGER로 선언된 첫 번째 "NO" 컬럼 값 가져오기.
int no = cursor.getInt(0) ;
// TEXT로 선언된 두 번째 "NAME" 컬럼 값 가져오기.
String name = cursor.getText(1) ;
//결과를 Debug
Log.e("SELECT","NO : "+no+", NAME : "+name);
}
|
cs |
참고
http://recipes4dev.tistory.com/120
http://egloos.zum.com/androcat/v/1776001