Android 에서 SQLite 데이터 베 이 스 를 사용 하 는 예제
SQLite 데이터 베 이 스 는 경량급 DBMS(데이터베이스 관리 시스템)다.SQLite 는 하나의 파일 로 데 이 터 를 저장 합 니 다.Android 표준 라 이브 러 리 는 SQLite 라 이브 러 리 와 세트 로 사용 되 는 자바 보조 클래스 를 포함 합 니 다.주요 특징:경량급,단일 파일,크로스 플랫폼,오픈 소스.
2.Android 에서 SQLite 데이터베이스 사용
1.SQLite 데이터베이스 만 들 기
SQLiteDatabase db=
SQLiteDatabase.openOrCreateDatabase(
"/data/data/" + getPackageName() + "/test.db",
null);
이 문 구 를 실행 하면 adb 셸 에서/data/package-name/에 들 어가 서 방금 만 든 데이터베이스 파일 을 볼 수 있 습 니 다.Android 에서 SQLiteDatabase 를 사용 하 는 정적 방법
openOrCreateDatabase(String path,SQLiteDatabase.Cursor Factory factory)에서 데이터 베 이 스 를 열거 나 만 듭 니 다.
이 데이터 베 이 스 는 자동 으로 존재 하 는 지 확인 합 니 다.존재 하면 열 립 니 다.그렇지 않 으 면 데이터 베 이 스 를 만 듭 니 다.생 성 에 성공 하면 SQLiteDatabase 대상 을 되 돌려 줍 니 다.FileNotFound Exception 이상 을 던 지 는 데 실 패 했 습 니 다.
상기 방법 을 제외 하고 안 드 로 이 드 는 SQLiteOpenHelper 라 는 종 류 를 제공 하여 데이터 베 이 스 를 만 들 었 습 니 다.먼저 SQLiteOpenHelper 를 계승 하여 onCreate 와 onUpgrade 방법 및 구조 방법 을 다시 작성 합 니 다.
public class MySqliteHelper extends SQLiteOpenHelper{
public MySqliteHelper(Context context) {
super(context, "mysqlite.db", null, 1);
//
// context
// mysqlite.db ( )
// null
// , 1
}
@Override
public void onCreate(SQLiteDatabase db) {
/* , db SQL
* ,
*/
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//
}
}
이어서 데이터 베 이 스 를 만 들 때 호출 합 니 다.
SQLiteOpenHelper dbHelper = new MySqliteHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteOpenHelper 로 만 든 데이터 베 이 스 를 사용 하여/data/package-name/databases/디 렉 터 리 에 저장 합 니 다.adb 셸 을 통 해 만 든 데이터베이스 파일 을 볼 수 있 습 니 다.2.데이터베이스 에 있 는 데이터 시트 만 들 기
데이터베이스 생 성 이 완료 되면 데 이 터 를 저장 하 는 표를 만 들 려 면 표 는 데이터베이스 에 저 장 됩 니 다.예제 코드 입력
private void createTable(SQLiteDatabase db){
//SQL
String sql =
"create table stutable(_id integer primary key autoincrement,name text,age integer)";
db.execSQL(sql);
}
여기에 SQLite 데이터 형식 을 첨부 합 니 다.NULL:이 값 은 빈 값 입 니 다.
VARCHAR(n):길이 가 고정 되 지 않 고 최대 길이 가 n 인 문자열 은 n 이 4000 을 초과 할 수 없습니다.
CHAR(n):길이 가 n 으로 고정 되 어 있 는 문자열 입 니 다.n 은 254 를 초과 할 수 없습니다.
INTEGER:값 은 정수 로 표시 되 고 값 의 크기 에 따라 1,2,3,4,5,6,7,8 로 순서대로 저 장 될 수 있 습 니 다.
REAL:모든 값 은 움 직 이 는 수치 이 고 8 바이트 로 저 장 된 IEEE 움 직 이 는 태그 번호 입 니 다.
TEXT:값 은 텍스트 문자열 이 며 데이터베이스 인 코딩 으로 저 장 됩 니 다(TUTF-8,UTF-16BE or UTF-16-LE).
BLOB:값 은 BLOB 데이터 블록 으로 입력 한 데이터 형식 으로 저 장 됩 니 다.입력 하 는 대로 저장 하고 형식 을 바 꾸 지 않 습 니 다.
DATA:연도,월,날짜 포함
상기 문 구 를 실행 하면 ADM 을 통 해 데이터베이스 파일 을 컴퓨터 로 내 보 낼 수 있 습 니 다.
시각 화 도 구 를 통 해 데이터베이스 파일 을 열 면 이전에 만 든 표 와 정 의 된 표 필드 를 볼 수 있 습 니 다.
표를 만 드 는 방법 을 정의 하 는 것 외 에 SQLiteOpenHelper 클래스 의 onCreate 방법 을 계승 하여 표 구 조 를 초기 화 할 수 있 으 며,뒤의 예 에 서 는 SQLiteOpenHelper 를 계승 하 는 방식 으로 표를 만 들 수 있 습 니 다.
3.표 조작(데이터 표 의 첨삭 검사)
증가:표 에 데 이 터 를 추가 하면 SQLiteDatabase 클래스 에서 제공 하 는 exec SQL(String sql)을 사용 하여 데 이 터 를 삽입 하 는 SQL 문 구 를 실행 할 수 있 습 니 다.그러나 AndroidSQLiteDatabase 류 는 데이터 삽입 작업 을 수행 하 는 더욱 간단 한 방법 을 제공 합 니 다.
//SQLiteDatabase
public long insert(
String table,//
String nullColumnHack,//
ContentValues values
//ContentValues Map
);
private void insertToTable(SQLiteDatabase db){
ContentValues cv = new ContentValues();
cv.put("name","wxq");
cv.put("age",11);
db.insert("stutable",null,cv);
}
insertTable 방법 을 실행 하고 데이터 베 이 스 를 다시 내 보 내 면 stutable 표 에 데 이 터 를 추가 하 는 것 을 볼 수 있 습 니 다.삭제:그래,방금 데 이 터 를 삽 입 했 어...
마찬가지 로 Android 는 delete 방법 을 제공 합 니 다.
//SQLiteDatabase
public int delete(
String table,//
String whereClause,//
String[] whereArgs); //
private void deleteToTable(SQLiteDatabase db){
// , name , age = ?
String whereClasuse = "name = ?";
// ,
String[] whereArgs = new String[]{"wxq"};
//
db.delete("stutable",whereClasuse,whereArgs);
}
위 문 구 를 실행 하면 stutable 표 에 삽 입 된 데 이 터 를 삭제 합 니 다.변경:
//SQLiteDatabase
public int update(
//
String table,
// ContentValues key-value
ContentValues values,
//
String whereClause,
//
String[] whereArgs
);
private void updateToTable(SQLiteDatabase db){
// ContentValues
ContentValues cv= new ContentValues();
cv.put("age",23);
//
String whereClause = "name = ?";
//
String[] whereArgs = new String[]{"wxq"};
db.update("stutable",cv,whereClause,whereArgs);
}
업데이트 문 구 를 실행 하고 데이터베이스 파일 을 내 보 냅 니 다.시각 화 도구 에서 봅 니 다.검색:Android 에서 데 이 터 를 조회 하 는 것 은 Cursor 클래스 를 통 해 이 루어 집 니 다.SQLiteDatabase.query()방법 을 사용 할 수 있 을 때 다른 방법 rawQuery 를 사용 합 니 다.
public Cursor rawQuery(
String sql,// SQL
String[] selectionArgs// SQL ?,
);
public void queryToTable(SQLiteDatabase db){
String sql = "select * from stutable";//
Cursor c = db.rawQuery(sql,null);// Cursor( )
}
SQLite 를 사용 하 는 데모(영웅 관리 시스템)
주요 조작 데이터베이스 코드
public class HeroSqliteManager {
private SQLiteOpenHelper dbHelper;
private SQLiteDatabase db;
private static HeroSqliteManager instance;
private static final String TABLE_NAME = "hero";
private static final String NAME_FIELD = "name";
private static final String ICOID_FIELD = "icoId";
private static final String ATTACK_FIELD = "attack";
private static final String DEFENSE_FIELD = "defense";
public static HeroSqliteManager getInstance() {
if (instance == null) {
synchronized (HeroSqliteManager.class) {
if (instance == null) {
instance = new HeroSqliteManager();
}
}
}
return instance;
}
private HeroSqliteManager() {
dbHelper = new HeroSqliteHelper(HeroApplication.getContext());
db = dbHelper.getWritableDatabase();
}
/**
*
* @param hero
*/
public void insertData(Hero hero) {
ContentValues cv = new ContentValues();
cv.put(NAME_FIELD, hero.name);
cv.put(ICOID_FIELD, hero.icoId);
cv.put(ATTACK_FIELD, hero.attack);
cv.put(DEFENSE_FIELD, hero.defense);
db.insert(TABLE_NAME, null, cv);
}
/**
*
* @param
*/
public void deleteData(int id) {
String whereClasuse = "_id = ?";
String[] whereArgs = new String[]{String.valueOf(id)};
db.delete(TABLE_NAME, whereClasuse, whereArgs);
}
/**
*
* @param hero
*/
public void updateData(Hero hero) {
ContentValues cv = new ContentValues();
cv.put(NAME_FIELD, hero.name);
cv.put(ICOID_FIELD, hero.icoId);
cv.put(ATTACK_FIELD, hero.attack);
cv.put(DEFENSE_FIELD, hero.defense);
String whereClasuse = "_id = ?";
String[] whereArgs = new String[]{String.valueOf(hero.id)};
db.update(TABLE_NAME, cv, whereClasuse, whereArgs);
}
/**
*
* @return
*/
public List<Hero> selectData() {
List<Hero> heroList = new ArrayList<>();
Cursor c = db.rawQuery("select * from " + TABLE_NAME, null);
while (c.moveToNext()) {
Hero hero = new Hero();
hero.id = c.getInt(c.getColumnIndex("_id"));
hero.name = c.getString(c.getColumnIndex(NAME_FIELD));
hero.icoId = c.getInt(c.getColumnIndex(ICOID_FIELD));
hero.attack = c.getInt(c.getColumnIndex(ATTACK_FIELD));
hero.defense = c.getInt(c.getColumnIndex(DEFENSE_FIELD));
heroList.add(hero);
}
c.close();
return heroList;
}
/**
* name
* @param name
* @return
*/
public Hero selectForName(String name) {
Cursor c = db.rawQuery("select * from " + TABLE_NAME + " where name = ?", new String[]{name});
Hero hero = null;
if (c.moveToNext()) {
hero = new Hero();
hero.id = c.getInt(c.getColumnIndex("_id"));
hero.name = c.getString(c.getColumnIndex(NAME_FIELD));
hero.icoId = c.getInt(c.getColumnIndex(ICOID_FIELD));
hero.attack = c.getInt(c.getColumnIndex(ATTACK_FIELD));
hero.defense = c.getInt(c.getColumnIndex(DEFENSE_FIELD));
}
c.close();
return hero;
}
public void destroy() {
// if (db != null) {
// db.close();
// }
// db = null;
}
}
SQLiteDemo 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.