본문 바로가기

개발/Android 개발 주저리

[Android]SQLite 기본 명령어 정리

데이터베이스 리스트 조회

ContextWrapper.databaseList();

ContextWrapper == ConText

 

데이터베이스 삭제

ContextWrapper.deleteDatabase("삭제할 데이터베이스명");

 

예)

if (Arrays.binarySearch(databaseList(), DATABASE_NAME) >= 0) {

   deleteDatabase(DATABASE_NAME);

}

 

어플리케이션내에 데이터베이스 열거나 생성

ContextWrapper.openOrCreateDatabase("데이터베이스명.db", 데이터베이스모드<읽기,쓰기전용 또는 기존에 파일있으면 열어라등.. 모드지정>, 쿼리가호출되는 커서를 선택<커서객체를 만들어 사용할지에입력 그렇지 않으면 null>);

 

예) SQLiteDatabase mydb=openOrCreateDatabase(DATABASE_NAME, SQLiteDatabase.CREATE_IF_NECESSARY, null);  조회해보고 없으면 생성해주는 상수값

 

 

데이터베이스 위치 설정

SQLiteDatabase.setLocale(Locale.getDefault()); 

 

데이터베이스 접근권한 설정

SQLiteDatabase.setLockingEnabled(true); 

 

데이터베이스 버전 설정

SQLiteDatabase.setVersion(1);

 

 

데이터베이스 위치 추출

SQLiteDatabase.getPath());

 

데이터베이스 버전

SQLiteDatabase.getVersion();

 

현재 데이터베이스  페이지사이즈

SQLiteDatabase.getPageSize();

 

데이터베이스의 최대크기

SQLiteDatabase.getMaximumSize();

 

데이터베이스가 열려 있는지

SQLiteDatabase.isOpen();

 

 

데이터베이스가 읽기 전용 인지

SQLiteDatabase.isReadOnly();

 

현재 쓰레드에 의해 데이터베이스가 잠겨 있는지

SQLiteDatabase.isDbLockedByCurrentThread();

 

 

쿼리문 실행메서드

SQLiteDatabase.execSQL("쿼리문");

예)

SQLiteDatabase.execSQL("CREATE TABLE tbl_authors (id INTEGER PRIMARY KEY AUTOINCREMENT , firstname TEXT, lastname TEXT);");

 

 

테이블에 데이터를 삽입할 경우

ContentValues values = new ContentValues();

ContentValues.put("필드명", 데이터);       (어디에 필드명)과 ( 데이터) 한묶음으로

//long id = SQLiteDatabase.insert(테이블명, null, ContentValues);

long id  = SQLiteDatabase.insertOrThrow(테이블명, null, ContentValues);

* 두번째 인자에 null을 사용하는 이유 : 완전히 비어있는 행을 허용하지 않기 때문에 세번재 인자값이 null인 경우를 방지

 

예)

ContentValues values = new ContentValues();

values.put("title", newBook.mTitle); => values.put("title", "해리");

values.put("dateadded", newBook.mDateAdded.toLocaleString()); =>values.put("dateadded", "2011-06-23")

values.put("authorid", newBook.mAuthor.mAuthorId);

//long id = SQLiteDatabase.insert(TABLE_BOOK, null, values);

long id  = SQLiteDatabase.insertOrThrow(TABLE_BOOK, null, values); 필요에따라 

SQLiteDatabase.insertOrThrow(TABLE_BOOK, null, values);

 

 

테이블에 데이터를 수정할 경우

ContentValues values = new ContentValues();

ContentValues.put("필드명", 데이터);

SQLiteDatabase.update(테이블명, ContentValues, "조건필드=?", ?를 치환할 문자배열);

 

예)

ContentValues values = new ContentValues();

ContentValues.put("필드명", 데이터);

SQLiteDatabase.update(TABLE_BOOK, values, "id=?", new String[] { bookId.toString() });

 

 

테이블에 데이터를 삭제할 경우

SQLiteDatabase.delete(테이블명, "조건필드=?", ?를 치환할 문자배열);

 

예)

SQLiteDatabase.delete(TABLE_BOOK, "id=?", new String[] { bookId.toString() });

 

 

테이블에 데이터를 조회할 경우

Cursor c = mDatabase.query(테이블명, null, null, null, null, null, null);    select

 

Cursor.getCount(); 조회된 recode의 총갯수

Cursor.getColumnCount(); 조회된 필드 갯수

Cursor.getColumnName(); 이름

Cursor.getPosition(); 현재 커서 포인터위치

Cursor.getString(int columnIndex); 필드값

 

 

커서포인트 위치를 바꿔주는 메서드 처음 (Cursor 위치는 항상 0번 이기에 First를 해줘야함)

Cursor.moveToFirst(); 커서포인터위치를 첫번째 레코드 위치로

Cursor.moveToNext(); 커서포인터위치를 다음 레코드 위치로

Cursor.moveToPrevious();  커서포인터위치를 이전 레코드 위치로

Cursor.moveToLast(); 커서포인터위치를 마지막 레코드위치로

Cursor.moveToPosition(int position); 커서포인터위치를 지정한 레코드 위치로

Cursor.isAfterLast(); 현재 커서포인터위치에서 다음레코드가 있는지 확인  //, 마지막레코드인지 확인 //마지막 레코드이면 true

recode, id값은 무관...

  

public void LogCursorInfo(Cursor c) {

  Log.i(DEBUG_TAG, "*** Cursor Begin *** " + " Results:" + c.getCount() + " Columns: " + c.getColumnCount());

 

  // Print column names

  String rowHeaders = "|| ";

  for (int i = 0; i < c.getColumnCount(); i++) {

     rowHeaders = rowHeaders.concat(c.getColumnName(i) + " || ");

  }

  Log.i(DEBUG_TAG, "COLUMNS " + rowHeaders);

 

  // Print records

  c.moveToFirst();

  while (c.isAfterLast() == false) {

     String rowResults = "|| ";

     for (int i = 0; i < c.getColumnCount(); i++) {

        rowResults = rowResults.concat(c.getString(i) + " || ");

     }

     Log.i(DEBUG_TAG, "Row " + c.getPosition() + ": " + rowResults);

     c.moveToNext();

  }

  Log.i(DEBUG_TAG, "*** Cursor End ***");

}

 

 

예)

Cursor c = mDatabase.query(TABLE_BOOK, null, null, null, null, null, null);

public void LogCursorInfo(Cursor c) {

  Log.i(DEBUG_TAG, "*** Cursor Begin *** " + " Results:" + c.getCount() + " Columns: " + c.getColumnCount());

 

  // Print column names

  String rowHeaders = "|| ";

  for (int i = 0; i < c.getColumnCount(); i++) {

     rowHeaders = rowHeaders.concat(c.getColumnName(i) + " || ");

  }

  Log.i(DEBUG_TAG, "COLUMNS " + rowHeaders);

 

  // Print records

  c.moveToFirst();

  while (c.isAfterLast() == false) {

     String rowResults = "|| ";

     for (int i = 0; i < c.getColumnCount(); i++) {

        rowResults = rowResults.concat(c.getString(i) + " || ");

     }

     Log.i(DEBUG_TAG, "Row " + c.getPosition() + ": " + rowResults);

     c.moveToNext();

  }

  Log.i(DEBUG_TAG, "*** Cursor End ***");

}

 

Date today = new Date(java.lang.System.currentTimeMillis());