SQLite 데이터베이스 이용하기 - SQLiteOpenHelper 클래스
CODEDRAGON ㆍDevelopment/Android
반응형
SQLite 데이터베이스 이용하기
- SQLiteOpenHelper 클래스
- SQLiteOpenHelper클래스의 메소드
- 데이터 추가
- SELECT - 데이터 가져오기
- UPDATE - 데이터 업데이트
- DELETE - 데이터 삭제
- 데이터 불러오기
SQLiteOpenHelper 클래스
- SQLiteOpenHelper는 데이터베이스에 접근할 수 있게 해주는 클래스
- 데이터베이스를 생성하고 오픈하거나 닫기를 하려면 SQLiteOpenHelper 객체를 사용해야 합니다.
- SQLiteOpenHelper 클래스는 애플리케이션에서 요구하는 내용에 따라 데이터베이스를 생성하거나 업그레이드하는 기능 제공합니다.
- DatabaseHelper클래스는 SQLiteOpenHelper클래스를 상속받아 데이터베이스에 접근하게 하는 사용자 정의 클래스
public class DatabaseHelper extends SQLiteOpenHelper{ // 생성자 public DatabaseHelper (Context context){ super(context, "dbtest", null, 1); //context: Activity등의 Context 인스턴스 //dbtest: 데이터베이스의 이름 //null: 커서 팩토리(보통 null지정) //1: 데이터베이스 스키마 버전 } public void onCreate(SQLiteDatabase db){ //테이블을 생성하고 초기 데이터를 추가 String table_sql = "CREATE TABLE test( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL);"; db.execSQL(table_sql); } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ // 버전 번호를 확인해서 새로운 스키마로 적절하게 업그레이드 수행 db.execSQL("DROP TABLE IF EXISTS test"); onCreate(db); //onCreate 메소드를 호출해서 새로 table 셋팅 } } |
SQLiteOpenHelper클래스의 메소드
메서드 | 설명 |
onCreate |
|
onUpgrade |
|
onOpen |
|
getReadableDatabase |
|
getWritableDatabase |
|
close |
|
데이터 추가
데이터베이스에 데이터를 저장하는 명령어
ContentValues cv = new ContentValues(); cv.put("title", "해피 데이"); cv.put("name", "홍길동"); db.("member", "title", cv); |
SELECT - 데이터 가져오기
db.query(TABLE_NAME, //테이블병 String[] {"name", "member"}, //컬럼 명세 null, //WHERE 절 null, //WHERE절에 전달될 데이터 null, //groupBy절 null, //having절 MEMO_ID + " DESC" //ORDER BY ); |
GROUP BY
- GROUP BY 절은 말 그대로 특정 칼럼을 기준으로 그룹으로 묶어 주는 역할을 합니다.
HAVING
- HAVING절은 WHERE절과 비슷한 개념으로 조건으로 제한하되 집계함수에 대해서 제한하게 됩니다.
- HAVING 절은 반드시 GROUP BY 절 다음에 나와야 합니다.
집계함수(aggregate function)
- SQL 집계 함수는 하나의 칼럼의 여러 값을 읽어 하나의 값으로 반환합니다.
- 집계 함수는 주로 GROUP BY 절과 함께 사용됩니다.
- 자주 사용되는 집계 함수로는 다음과 같은 것들이 있습니다.
집계함수 | 설명 |
COUNT | 행의 개수를 센다. |
AVG | 행들의 값들을 평균낸다. |
SUM | 행들의 값을 모두 더한다. |
MAX | 최대값을 구한다. |
MIN | 최소값을 구한다. |
STDEV | 표준편차를 구한다. |
UPDATE - 데이터 업데이트
데이터베이스에 저장된 데이터를 수정하는 명령어
ContentValues cv = new ContentValues(); cv.put("name", "홍길동"); |
String[] params = new String[] {"dragon"}; db.update("member", cv, "userid=?", params); |
DELETE - 데이터 삭제
데이터베이스에 저장된 데이터를 삭제하는 명령어
String[] params = new String[]{userid}; db.delete("member", "userid=?", params); |
데이터 불러오기
rawQuery() 메소드를 사용해 SELECT 구문을 직접 실행
Cursor c = db.rawQuery("SELECT name FROM sqlite_master where type='table' AND name='constants'", null); |
query() 메소드를 인자로 각 부분의 값을 넘겨 실행
public Cursor query(String table, String[] columns, String selection, String[] selcetionArgs, String groupBy, String having, String orderBy, String limit) |
값 | 설명 |
table | 대상 테이블 이름 |
columns | 값을 가져올 컬럼 이름의 배열 (null : 모든 열) |
selection | WHERE 구문 물음표를 사용해 인자의 위치를 지정할 수 있음 (null : 모든 레코드) |
selectionArgs | WHERE 구문에 들어가는 인자값 |
groupBy | GROUP BY 구문 (null : 미사용) |
orderBy | ORDER BY 구문 (null : 미사용) |
limit | 레코드수 지정 (null : 미사용) |
SQLiteQueryBuilder 클래스의 query() 메소드 이용
'Development > Android' 카테고리의 다른 글
Android(안드로이드) 애뮬레이터 설정 (0) | 2021.12.01 |
---|---|
SAMSUNG Tizen SDK/APIs 링크 (0) | 2021.11.30 |
shouldOverrideUrlLoading() 함수 대체 (0) | 2020.12.30 |
Device File Explorer - AndroidStudio의 파일 탐색기 (0) | 2020.12.23 |
SQLite-DataBase 파일 생성 확인 및 파일 추출 (0) | 2020.11.28 |