Android

SQLiteDatabase 클래스

tmxhsk99 2018. 11. 21. 19:31

SQLiteDatavase db = openOrCreateDatabase ("memodb",MODE_PRIVATE,null);


sqlitedatabase 객체를 얻으려면 openOrCreateDatabase()함수를 이용합니다. 

이 함수의 첫번째 매개 변수는 개발자가 지정하는 데이터 베이스 파일명입니다 . 

이렇게 얻은 객체로 SQL문을 수행합니다 


execSQL (String sql ) : insert, update 등 select 문이 아닌 나머지 SQL 수행 

rawQuery(String sql, String[] selectionArgs , Object[] bindArgs) : select SQL 수행 



데이터 베이스에 저장하려문 insert 문 을 사용 

예시)

db.execSQL("insert into tb_memo (title,content)values (?,?)",new String[] {title , content});


첫번째 매개변수에 sql문 2번째 에는  그 ? 에 들어갈 단어들을 배열로 만들어서 집어넣는다 


select문 사용예시


Cursor cursor = db.rawQuery("select title, content from tb_memo order by _id desc limit 1" , null);


sql 문에 표현이 없어 두번째 매개변수부분이 null .rawQuery() 함수의 결과값은 Cursor 객체 . 

Cursor는 선택된 행(row)의 집합 객체 정도로 이해하면 된다.

여기서 각 열 (Column) 에 해당하는 데이터를 획득하려면 Cursor 객체를 이용해 행을 선택하고 선택된 행의 열 데이터를 획득하는 구조이다 . 

cursor의 행을 선택하는 함 수는 다음과 같다 행을 선택하지 않은상태에서는 열데이터를 추출할수 없다 .


moveToNext(): 순서상으로 다음행 선택

moveToFirts(): 가장 첫번째 행 선택

moveToLast(): 가장 마지막 행 선택


moveToNext()함수를 이용하여 행을 선택하고 선택된 행의 getString () 함수를 이용하여 열데이터를 가져오는 예입니다.

이때 getString 함수의 매개변수는 몇번째 열의 데이터를 가져오는지 지정합니다. 예를 들어 getString(0)이면 첫번째 열의 데이터를 가져옵니다. 


while (cursor.moveToNext()){

titleView.setText(cursor.getString(0));

contentview.setText(cursor.getString(1));_

}


SQLiteOpenHelper 클래스


SQLiteOpenHelper 클래스는 일본의 데이터베이스 관리만을 목적으로 하는 클래스라고 보면 된다 . 

데이터 저장이나 획등등의 코드는 SQLiteDatabase 클래스를 이용하여 insert,select 작업을 하고, 

테이블 생성이나 스키마 변경등의 작업은 SQLiteOpenHelper클래스로 일원화하는 구조 입니다

이렇게 하므로서 select, insert 작업을 수행할때 테이블 생성 여부를 판단하지 않아도 되는 이점이 존재한다 

SQLiteOpenHelper클래스는 추상클래스이므로 서브클래스를 만들어 사용해야합니다 . 


아래코드는 SQLiteOpenHelper를 상속받아 작성한 하위 클래스 구조입니다 . 

생성자를 보면 super(context,"DBInfo.DBNAME",null,version:1); 의 구문이 있는데 

두번째 매개변수가 데이터베이스 이름 ,이고 마지막은 버전 정보이다 그리고 onCreate와 onUpgrade 함수를 재정의 해야한다 . 

onCreate() : 앱이 설치된 후 SQLiteOpenHelper가 최초로 이용되는 순간 한번 호출 

onUpgrade(): 데이터베이스 버전이 변경될때 마다 호출 




onCreate는  클래스가 최초로 사용되는 순간 호출 앱내에 가장 처음 한번만 수행하면 되는 코드를 작성하고 사용되며 , 대부부느 테이블을 생성하는 코드를 작성 

onUpgrade() 함수는 SQLiteOpenHelper 클래스의 생성자에 절달되는 데이터베이스 버전정보가 변경 될때 마다 반복해서 호출 결국 테이블의 스키마 부분을 변경하기 위한 용도로 사용됩니다 . 단 버전이 변경된 않으면 호출 되지 않습니다 . 


SQLiteHelper를 정의 했다면 실제 SQL 문 수행을 위해 SQLiteDatabase 객체를 획득합니다. 이때는 SQLiteOpenHelper 클래스의 getReaderableDatabase ()함수와 함깨 getWritableDatabase() 함수를 이용합니다 


Main에서 static으로  SQLitehelper를 상속 받은 클래스를 만들어놓음


login.java

 

Main에서 만들어 놓은 것을 가져다씀