android 에서 SQLite 데이터베이스 와 관련 된 클래스

7860 단어
왜 응용 프로그램 에서 데이터 베 이 스 를 사용 합 니까?데이터베이스 의 가장 주요 한 용 도 는 바로 데이터 의 저장 용기 이다. 또한 응용 프로그램의 데이터 구조 (예 를 들 어 C 언어 중의 구조 체) 를 데이터베이스 의 표 로 편리 하 게 전환 할 수 있 기 때문에 우 리 는 데이터 베 이 스 를 조작 하여 계산 법 을 대체 하여 데이터 구 조 를 조작 할 수 있다.안 드 로 이 드 시스템 은 경량급 관계 형 데이터 베 이 스 를 통합 시 켰 다. SQLite 는 본질 적 으로 SQLite 데이터 베 이 스 는 바 텀 에 있 는 데이터베이스 파일 이다. 우리 가 SQLite 데이터 베 이 스 를 열 때 그 에 대응 하 는 데이터 베이스 파일 을 열 어 읽 고 쓰 는 것 이기 때문에 SQLite 데이터 베 이 스 를 조작 하 는 것 은 본질 적 으로 더욱 편리 한 파일 작업 일 뿐이다.안 드 로 이 드 시스템 에서 SQLite 데이터베이스 와 관련 된 종 류 는 주로 세 가지 가 있 습 니 다. SQLiteDatabaseSQLiteOpenHelper Cursor 는 현재 각각 이 를 소개 합 니 다. 1 SQLiteDatabase:
응용 프로그램 에서 저 희 는 sqlite 셸 을 통 해 직접 명령 을 입력 하여 데이터 베 이 스 를 조작 할 수 없습니다. 그래서 안 드 로 이 드 시스템 은 SQLiteDatabase 류 를 제공 합 니 다. 이 클래스 가 제공 하 는 대량의 API 로 SQLite 데이터 베 이 스 를 조작 합 니 다. 모든 SQLiteDatabase 의 인 스 턴 스 는 하나의 데이터 베이스 (바 텀 에 대응 하 는 데이터베이스 파일) 를 대표 합 니 다. 응용 프로그램 이 SQLiteDatabase 대상 을 얻 으 면이 대상 을 통 해 이에 대응 하 는 데이터 베 이 스 를 조작 할 수 있다.
SQLiteDatabase 는 SQLite 데이터 베 이 스 를 관리 하 는 많은 방법 을 제공 합 니 다. 주요 한 방법 은 데이터 베 이 스 를 열거 나 만 드 는 방법 입 니 다. static SQLiteDatabase openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags) static SQLiteDatabase openOrCreateDatabase (String path, SQLiteDatabase. Cursor Factory factory) static SQLiteDatabase openOrCreateDatabase (File file, SQLiteDatabase. Cursor Factory factory) path: 데이터베이스 파일 을 여 는 것 을 대표 합 니 다.factory: (선택 가능 한 공장 클래스, 데이터베이스 조회 문 구 를 실행 할 때 (즉 selection 문) 이 매개 변 수 는          호출 되 었 습 니 다. cursor 대상 을 예화 하 는 데 사 용 됩 니 다. null 이면 시스템 기본 공장 을 사용 하여 cursor 대상 을 예화 합 니 다. flag: :OPEN_READWRITE, OPEN_READONLY, CREATE_IF_NECESSARY. , ,
                        。
2 데이터 베 이 스 를 조작 하 는 방법: void exec SQL (String sql) void exec SQL (String sql, Object [] bidArgs) Cursor rawQuery (String sql, String [] selectionArgs)이전 두 가지 방법 은 반환 값 이 없 는 sql 문 구 를 실행 하 는 데 사 용 됩 니 다. 예 를 들 어 create table, drop table, alter table, insert into, delete from, update 는 각각 데이터베이스 시트 의 추가 삭제 와 기록 을 나타 내 는 추가 삭제 명령 void exec SQL (String sql) 은 자리 표시 자 없 는 sql 문 구 를 실행 합 니 다. 예 를 들 어 다음 두 줄 코드 는 데이터베이스 에 person info 라 는 표를 만 듭 니 다. String sql ="create table person info ( id integer primary key, name text, age integer)"; db. execSQL (sql); void execSQL (String sql, Object [] bindArgs) 은 자리 표시 자 를 가 진 sql 문 구 를 실행 합 니 다. 예 를 들 어 String sql = "insert into person info (name, age) values (??)"; db. execSQL (sql, new Object [] {"손오공", 500}); 첫 번 째 매개 변수 sql 은 자리 차지 문자 가 있 는 sql 문 구 를 대표 합 니 다. 두 번 째 매개 변 수 는 자리 차지 문자 의 값 을 지정 합 니 다. Cursor rawQuery (String sql, String [] selectionArgs) 방법 은 자리 차지 문자 가 있 는 데이터베이스 조회 문 구 를 실행 합 니 다. 이 방법 은 데이터베이스 조회 문 구 를 옮 겨 다 니 는 결과 집합 을 되 돌려 줍 니 다.(selection 문장의 결 과 는 실질 적 으로 표 입 니 다. selection 문 구 는 사실 하나 이상 의 표를 입력 하고 일부 열 처 리 를 거 쳐 새로운 시 계 를 출력 하 는 것 입 니 다.) 비고: 왜 자리 표시 자 를 가 진 sql 문 구 를 필요 로 합 니까? 예 를 들 어 db. exec SQL (insert into person (name, age) values ('책상', 4)))); 이 sql 문 구 는 persron 표 에 한 줄 의 기록 을 삽입 하 는 데 사 용 됩 니 다. 그러나 실제 응용 에 서 는 "책상" 과 유사 합 니 다.이러한 매개 변수 값 은 사용자 UI 인터페이스 에서 나 오 는 경우 가 많 습 니 다. 사용자 가 입력 한 내용 을 위 에 있 는 insert 문 구 를 그대로 조합 하면 사용자 가 입력 한 내용 에 작은 따옴표 가 포함 되 어 있 을 때 그룹 이 맞 춘 SQL 문 구 는 문법 오류 가 발생 합 니 다. 이 문 제 를 해결 하려 면 작은 따옴표 를 두 개의 작은 따옴표 로 변환 해 야 합 니 다. 어떤 때 는 사용자 가 입력 하기 도 합 니 다."&" 와 같은 특수 SQL 기 호 는 그룹 이 맞 춘 SQL 구문 문법 이 정확 하도록 하기 위해 SQL 구문 에 있 는 이러한 특수 SQL 기 호 를 모두 전의 해 야 합 니 다. 분명 한 것 은 모든 SQL 문 구 를 처리 하 는 것 이 번 거 롭 습 니 다. 유사 한 문 제 를 해결 하기 위해 SQLiteDatabase 는 void exec SQL (String sql) 을 제공 합 니 다.방법, 자리 표시 자 를 가 진 sql 문 구 를 실행 하 는 데 사 용 됩 니 다. 이외에 도 SQLiteDatabase 는 insert, delete, updatea, query 와 같은 많은 방법 을 제공 합 니 다. 사실 이 방법 들 은 sql 문 구 를 실행 함으로써 이 루어 집 니 다. 이러한 방법 을 제공 하 는 이 유 는 안 드 로 이 드 가 일부 개발 자 들 이 sql 문법 에 익숙 하지 않 은 것 을 고려 하여 개발 자 들 이 SQLite 를 조작 하 는 데 도움 을 주 는 방법 을 제공 합 니 다.데이터베이스, sql 문법 을 잘 아 는 개발 자 에 게 는 이러한 방법 을 무시 할 수 있 습 니 다. SQLite 에 대한 대략적인 소 개 는 SQLite 학습 노트 2 Cursor 를 참조 할 수 있 습 니 다.
Cursor 인 터 페 이 스 는 무 작위 로 접근 하 는 채널 을 제공 합 니 다. 이 채널 을 통 해 데이터베이스 조회 문 (selection 문) 에 접근 합 니 다.의 결과 집합 입 니 다. 안 드 로 이 드 시스템 은 Cursor 인터페이스의 구현 클래스 가 동기 화 되 는 것 을 요구 하지 않 기 때문에 개발 자 는 Cursor 를 사용 하 는 다 중 스 레 드 코드 에서 자신의 동기 화 작업 을 수행 해 야 합 니 다. 따라서 Curosr 는 도구 클래스 입 니 다. 그 용 도 는 데이터베이스 검색 어 를 방문 하 는 결과 집합 입 니 다. 데이터 베 이 스 를 기반 으로 한 것 은 모두 알 고 있 습 니 다. selection 문장의 결과 집합 은 사실 한 장 입 니 다.표 는 여러 줄 과 여러 열 로 구성 되 어 있 으 며, 각 줄 은 기록 이 라 고 불 리 며, 각 열 은 필드 라 고 불 린 다. Cursor 대상 에는 결과 가 집 중 된 한 줄 의 기록 을 가리 키 는 기록 지침 이 포함 되 어 있 으 며, Cur 대상 은 결과 집합 을 조작 하 는 많은 방법 을 제공 하 였 으 며, 용도 에 따라 주로 두 가지 로 나 뉜 다.
1 Cursor 기록 포인터 와 관련 된 방법: abstract boolean moveToFirst ()   //기록 포인터 가 첫 줄 abstract boolean moveToLast () 로 이동     //기록 포인터 가 마지막 줄 abstract boolean moveToNext () 로 이동 합 니 다.     //기록 포인터 가 다음 줄 abstract boolean moveToPrevious () 로 이동 합 니 다. //레코드 포인터 가 이전 줄 abstract boolean moveToPosition (int position) 으로 이동    //레코드 포인터 가 지정 한 줄 abstract boolean move (int offset) 로 이동 합 니 다.  / /지정 한 줄 수 를 현재 위치 에서 앞으로 이동 하거나 뒤로 이동 하 는 지침 을 기록 합 니 다. offset 정 수 는 뒤로 이동 하고 마이너스 일 때 앞으로 이동 합 니 다. abstract int getPosition ()        //현재 위치 0 을 되 돌려 주 는 것 은 첫 번 째 줄 을 의미 합 니 다.. abstract int getCount ()         //결 과 를 집중 적 으로 기록 한 총 수 를 되 돌려 줍 니 다. 비고: 데이터베이스 검색 어 를 실행 하여 되 돌아 오 는 Cursor 대상 은 초기 상태 에서 기록 포인터 가 첫 줄 에 기 록 된 이전 위 치 를 가리 키 며, getPosition () 을 호출 하여 - 1 을 되 돌려 줍 니 다. 2 다른 많은 것 은 지정 한 필드 를 읽 는 방법 getXxx (). abstract int getColumnCount () 입 니 다.       //결과 집합의 열 수 를 되 돌려 줍 니 다. (즉, 결 과 는 줄 마다 몇 개의 필드 를 포함 하 는 지 집중 합 니 다.) getColumnIndex (String columnName)     //필드 이름 에 따라 이 필드 가 결과 에 집 중 된 색인 값 (첫 번 째 열 은 0, 두 번 째 열 은 1, 순서대로 유추) 을 되 돌려 줍 니 다. 이 필드 가 존재 하지 않 으 면 - 1. getColumnName (int columnIndex) 을 되 돌려 줍 니 다.       //색인 값 에 따라 이 필드 의 필드 이름 을 가 져 옵 니 다. abstract int getType (int columnIndex)     //지정 한 필드 의 종 류 를 가 져 옵 니 다. 성형 상수 값 FIELD TYPE BLOB, FIELD TYPE FLOAT, FIELD TYPE INTEGER, FIELD TYPE NULL, FIELD TYPE STRING 은 각각 불 종류, 실수 종류, 성형, null, 문자열 종 류 를 나 타 냅 니 다. 나머지 는 getXxx () 입 니 다.방법. 요약: 결과 가 집 중 된 m 줄 n 의 값 을 Cursor 대상 을 통 해 어떻게 읽 습 니까? 사실 매우 간단 합 니 다. 우선 Cursor 의 기록 포인 터 를 m 줄 로 이동 한 다음 getXxx (n) 방법 으로 지정 한 필드 의 값 을 읽 으 면 됩 니 다. 데이터베이스 결과 집합 을 옮 겨 다 니 는 일반적인 방법: while (cursor. moveToNext () {    //getXxx () 지정 한 열의 값 읽 기} 3 SQLiteOpenHelper
SQLiteOpenHelper 는 데이터베이스 생 성과 버 전 업 데 이 트 를 관리 하 는 조수 클래스 입 니 다. SQLiteOpenHelper 는 추상 적 인 클래스 입 니 다. 일반적인 용법 은 하위 클래스 를 만 들 고 onCreate (SQLiteDatabase db) 를 덮어 쓰 는 것 입 니 다. onUpgrade(SQLiteDatabase, int, int) , ( ) ( ), 。
SQLiteOpenHelper :
:

SQLiteDatabase getReadableDatabase()  // , SQLiteDatabase 。  
SQLiteDatabase getWritableDatabase()   //읽 기와 쓰기 로 데이터 베 이 스 를 엽 니 다. SQLiteDatabase 。

synchronized void close ()    //데이터베이스 public abstract void onCreate 닫 기 (SQLiteDatabase db)   //Called when the database is created for the first time. 이것 은 테이블 의 생 성과 테이블 의 초기 인구 가 발생 해 야 하 는 곳 입 니 다. onCreate (SQLiteDatabase db) 방법 은 리 셋 방법 입 니 다. 응용 프로그램 이 처음으로 getReadableDatabase () 를 호출 할 때또는 getWritable Database 방법 으로 데이터 베 이 스 를 열 때 데이터베이스 가 존재 하지 않 기 때문에 시스템 은 이 방법 으로 데이터 베 이 스 를 만 들 고 초기 화 하 는 값 을 되 돌려 줍 니 다. 따라서 일반적으로 onCreate 방법 () 은 데이터 베 이 스 를 만 드 는 표 와 데이터 초기 화 를 수행 하 는 곳 입 니 다.
onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) 방법 도 마찬가지 로 리 셋 방법 입 니 다. 응용 프로그램 에서 SQLiteOpenHelper 의 인 스 턴 스 를 만 들 고 지정 한 데이터베이스 버 전이 원래 버 전보 다 높 을 때 시스템 이 리 셋 합 니 다.
안 드 로 이 드 응용 프로그램 에서 SQLite 데이터 베 이 스 를 사용 하 는 절차: 1 첫 번 째 단 계 는 SQLiteOpenHelper 의 하위 클래스 XxxDBHelper 를 정의 하고 OnCreate (SQLiteDatabase db) 방법 을 덮어 씁 니 다. 2 필요 에 따라 XxxDBHelper 클래스 에 기록 을 추가 하 는 추가 삭제 검사 방법 입 니 다. 3 라 이브 러 리 데 이 터 를 가 져 올 activity 에서 XxxDBHelper 의 인 스 턴 스 를 만 들 고 그 방법 으로 데이터 베 이 스 를 조작 합 니 다.
다음으로 전송:https://www.cnblogs.com/SZ2015/p/4588051.html

좋은 웹페이지 즐겨찾기