Android 앱 개발 기초 편-데이터 저장(SQLite 데이터베이스)
23041 단어 Android
선언:Android 에서 SQLite 데이터베이스 에 대한 지원 을 제공 합 니 다.개발 자 는 응용 프로그램 에서 자신의 데이터 베 이 스 를 만 들 고 조작 하여 데 이 터 를 저장 하고 데 이 터 를 조작 할 수 있다.
SQLite 데이터베이스 만 들 기
응용 프로그램 에서 SQLite 데이터 베 이 스 를 사용 하려 면 SQLiteOpenHelper 클래스 를 계승 하 는 보조 클래스 를 만 든 다음 onCreate()방법 을 다시 쓸 수 있 습 니 다.예 를 들 어:
package com.test.testapplication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by linyingkun on 2017/3/3.
*/
public class DBHelper extends SQLiteOpenHelper {
private Context mContext;
// 、 。 ,
// 、 ,
// 。
public DBHelper(Context context) {
super(context, "testdb", null, 1);
mContext = context;
}
// onCreate() SQL ,
// ,
@Override
public void onCreate(SQLiteDatabase db) {
String create_table = "CREATE TABLE students(id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name VARCHAR(20),age VARCHAR(20));";
db.execSQL(create_table);
}
// ,
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2.데이터 베 이 스 를 만 들 고 데 이 터 를 조작 합 니 다.
2.1 데이터베이스 만 들 기
절 차 를 마 친 후 응용 에서 데이터 베 이 스 를 사용 해 야 하 는 곳 에서 보조 클래스 대상 을 얻 은 다음 getReadable Database()또는 getWriteable Database()방법 으로 데이터 베 이 스 를 만 듭 니 다.이 단 계 를 통 해 시스템 에 같은 이름 의 데이터베이스 가 존재 하지 않 으 면 시스템 의/data/데이터/패키지 이름/databases 디 렉 터 리 아래 보조 클래스 에서 지정 한 이름 의 데이터 베 이 스 를 만 들 고 onCreate()방법 이 호출 됩 니 다.단,시스템 에 같은 이름 의 데이터베이스 가 존재 한다 면 onCreate()방법 은 더 이상 호출 되 지 않 고 데이터 버 전이 바 뀌 었 을 때 만 onUpgrade()방법 이 호출 됩 니 다.
DBHelper dbHelper = new DBHelper(this);
SQLiteDatabase writableDatabase = dbHelper.getWritableDatabase();
2.2 데이터베이스 에서 의 데이터 조작
데이터베이스 에 있 는 데 이 터 를 조작 하려 면 데이터베이스 대상 을 직접 사용 하여 대응 하 는 SQL 문 구 를 실행 할 수도 있 고 ORM(대상 관계 맵)을 통 해 매 핑 할 수도 있다.다음은 예 시 를 살 펴 보 자.
2.2.1 증가
일반 방법:
// SQL , //insert into ( 1, 2,...) values (" 1"," 2",...) // 。 String insert = "INSERT INTO students (name,age) VALUES ('s1','20')"; // execSQL() SQL writableDatabase.execSQL(sql);
ORM 방법:// ContentValues ContentValues contentValues = new ContentValues(); // ContentValues contentValues.put("name", "s2"); contentValues.put("age", "21"); // insert() Contentvalues writableDatabase.insert("students", null, contentValues);
2.2.2 조사
일반 방법//SQL , //select (* ) from where ( name="s1", ) String query = "SELECT * FROM students"; // rawQuery() , Cursor // 1: SQL // 2: , null。 , //SELECT * FROM students WHERE name="s1", //SELECT * FROM students WHERE name=?, 2 , new String[]{"s1"} 。 Cursor cursor = writableDatabase.rawQuery(query, null); // cursor boolean b = cursor.moveToFirst(); // b true, while (b) { // index int nameIndex = cursor.getColumnIndex("name"); int ageIndex = cursor.getColumnIndex("age"); // String name = cursor.getString(nameIndex); String age = cursor.getString(ageIndex); // cursor b = cursor.moveToNext(); }
ORM 방법:// query() , // 1: // 2: ,String 。 new String[]{"name","age"}, // 3: 。String , name // 4: ,String 。 // 5: // 6: // 7: // , , null。 Cursor cursor = writableDatabase.query("students", new String[]{"name", "age"}, "name=?", new String[]{"s1"}, null, null, null); boolean b = cursor.moveToFirst(); while (b) { int nameIndex = cursor.getColumnIndex("name"); int ageIndex = cursor.getColumnIndex("age"); String name = cursor.getString(nameIndex); String age = cursor.getString(ageIndex); b = cursor.moveToNext(); Log.e("MainActivity", name + ":" + age); }
2.2.3 삭제
일반 방법// SQL , //delete from where String delete = "DELETE FROM students WHERE name=?"; // execSQL() SQL 。 // 1: SQL // 2: 。 SQL , , // ? , 2 。 // : , SQL DELETE FROM students, // writableDatabase.execSQL(delete); // 。 writableDatabase.execSQL(delete, new String[]{"s1"});
ORM 방법:// delete() 。 // 1: // 2: // 3: writableDatabase.delete("students","name=?",new String[]{"s1"});
2.2.4 개
일반 방법:// SQL , //update set 1=" ", 2=" ",... where String update = "UPDATE students SET name=?,age=? WHERE id=?"; // execSQL() 。 writableDatabase.execSQL(update,new String[]{" 1","10","1"});
ORM 방법:
//ContentValues 대상 가 져 오기 ContentValues values=newContentValues();/ContentValues 대상 에 수정 할 데이터 values.put("name","작은 2")를 삽입 합 니 다.values.put("age","25");//데이터베이스 대상 을 사용 하여 update()방법 을 호출 합 니 다.각 매개 변 수 는//매개 변수 1:표 이름//매개 변수 2:데이터//매개 변수 3:조건 문//매개 변수 4:조건 부 대체 자 는 writableDatabase.update("students",values,"id=?"를 채 웁 니 다.newString[]{"26"});
후기:이 편 은 안 드 로 이 드 의 SQLite 데이터베이스 사용 방법 을 간단하게 기술 하 였 다.일반적으로 데이터 양 이 많 지 않 으 면 코드 에서 상술 한 방법 을 직접 사용 하 는 데 아무런 문제 가 없 을 것 이다.그러나 데이터 양 이 많 으 면 ANR 이나 프로그램 붕 괴 를 초래 할 수 있다.그래서 SQLite 데이터 베 이 스 를 사용 할 때 신중 해 야 합 니 다.조건 이 있 으 면 데이터베이스 가 실제 개발 에서 의 사용 기술 을 더욱 깊이 있 게 배 울 수 있다.이렇게 하면 자신의 기술 수준 을 향상 시 키 는 데 도 도움 이 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.