Android SQLite 상세 설명 및 예시 코드
1.SQLite 가 무엇 입 니까?
2.Android 에서 SQLite 사용
SQLite
SQLite 는 오픈 소스,경량급,내장 형,관계 형 데이터 베이스 입 니 다.2000 년 D.Richard Hipp 가 발표 한 것 으로 자바,넷,PHP,Ruby,Python,Perl,C 등 거의 모든 현대 프로 그래 밍 언어 를 지원 할 수 있 으 며 윈도,리 눅 스,유 닉 스,맥 OS,안 드 로 이 드,IOS 등 거의 모든 주류 운영 체제 플랫폼 을 지원 한다.
SQLite 는 애플,Adobe,Google 의 다양한 제품 에 널리 사용 되 고 있 습 니 다.굳이 SQLite 를 사용 하 는 예 를 들 어야 한다 면,만약 당신 의 기계 에 번개 가 설치 되 어 있다 면,번개 설치 디 렉 터 리 를 열 어 sqlite 3.dll 을 검색 해 보 세 요.그 그림 자 를 찾 았 습 니까?만약 당신 이 금 산 어패 가 설치 되 어 있다 면,그의 설치 디 렉 터 리 를 열 어도 sqlite.dll 의 존 재 를 볼 수 있 습 니 다.네,SQLite 는 우리 가 접촉 하 는 각종 제품 에 광범 위 하 게 응용 되 었 습 니 다.물론 우 리 는 오늘 그것 을 배 웠 습 니 다.안 드 로 이 드 개발 에서 안 드 로 이 드 가 추천 하 는 데이터 베이스 이자 완전한 지원 데이터 베 이 스 를 내장 한 것 이 바로 SQLite 이기 때 문 입 니 다.
SQLite 의 특성:
1.ACID 업무
2.0 설정 C 는 설정 을 설치 하고 관리 할 필요 가 없습니다.
3.단일 디스크 파일 에 저 장 된 완전한 데이터베이스
4.데이터베이스 파일 은 바이트 순서 가 다른 기기 에서 자 유 롭 게 공유 할 수 있다.
5.2TB 까지 데이터베이스 크기 지원
6.충분히 작 습 니 다.대략 3 만 줄 의 C 코드,250 K 입 니 다.
7.일부 유행 하 는 데이터베이스 보다 대부분의 일반 데이터베이스 에서 조작 이 빠르다
8.간단 하고 가 벼 운 API
9.TCL 바 인 딩 을 포함 하고 Wrapper 를 통 해 다른 언어의 바 인 딩 을 지원 합 니 다.
10.좋 은 주석 소스 코드,90%이상 의 테스트 보급률
11.독립:별도의 의존 없 음
12.Source 의 완전한 Open,판매 등 모든 용도 로 사용 할 수 있 습 니 다.
13.다양한 개발 언어 지원,C,PHP,Perl,Java,ASP.NET,Python
추천 하 는 SQLite 클 라 이언 트 관리 도구,불 여우 플러그 인 Sqlite Manger
2.Android 에서 SQLite 사용
우 리 는 여전히 하나의 예 를 통 해 학습 하 는데,관련 설명 은 모두 코드 주석 에 쓰 여 있다.
1,새 항목 Lesson 15HelloSqlite,Activity 이름 은 MainHelloSqlite.java
2.사용자 인터페이스 res/layout/main.xml 를 작성 하여 추가(insert)삭제(delete)변경(update)검사(select)네 개의 단 추 를 준비 하고 드 롭 다운 목록 spinner 를 준비 하여 표 의 데 이 터 를 표시 합 니 다.
<?xml version="1.0" encoding="utf-8"?>
<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
<textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/TextView01" android:text="SQLite ">
</textview>
<button android:layout_height="wrap_content" android:layout_width="wrap_content" android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button01" android:text=" | insert" android:minwidth="200dp"></button>
<button android:layout_height="wrap_content" android:layout_width="wrap_content" android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button02" android:text=" | delete" android:minwidth="200dp"></button>
<button android:layout_height="wrap_content" android:layout_width="wrap_content" android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button03" android:text=" | update" android:minwidth="200dp"></button>
<button android:layout_height="wrap_content" android:layout_width="wrap_content" android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button04" android:text=" | select" android:minwidth="200dp"></button>
<spinner android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_margintop="5dp" android:id="@+id/Spinner01" android:minwidth="200dp">
</spinner>
<textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/TextView02"></textview>
</linearlayout>
3.MainHeloSqlite.java 의 같은 디 렉 터 리 에 데이터베이스 작업 보조 클래스 DbHelper.java 를 새로 만 듭 니 다.내용 은 다음 과 같 습 니 다.
package android.basic.lesson15;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
//
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE pic (_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , fileName VARCHAR, description VARCHAR)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
4.MainHelloSqlite.java 의 내용 은 다음 과 같 습 니 다.
package android.basic.lesson15;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainHelloSqlite extends Activity {
//SQLiteDatabase
SQLiteDatabase db;
//
public String db_name = "gallery.sqlite";
//
public String table_name = "pic";
//
final DbHelper helper = new DbHelper(this, db_name, null, 1);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//UI
Button b1 = (Button) findViewById(R.id.Button01);
Button b2 = (Button) findViewById(R.id.Button02);
Button b3 = (Button) findViewById(R.id.Button03);
Button b4 = (Button) findViewById(R.id.Button04);
//
db = helper.getWritableDatabase();
//
initDatabase(db);
//
updateSpinner();
//
OnClickListener ocl = new OnClickListener() {
@Override
public void onClick(View v) {
//ContentValues
ContentValues cv = new ContentValues();
switch (v.getId()) {
//
case R.id.Button01:
cv.put("fileName", "pic5.jpg");
cv.put("description", " 5");
//
long long1 = db.insert("pic", "", cv);
// , -1
if (long1 == -1) {
Toast.makeText(MainHelloSqlite.this,
"ID " + long1 + " !", Toast.LENGTH_SHORT)
.show();
} else {
Toast.makeText(MainHelloSqlite.this,
"ID " + long1 + " !", Toast.LENGTH_SHORT)
.show();
}
//
updateSpinner();
break;
// ' 5'
case R.id.Button02:
//
long long2 = db.delete("pic", "description=' 5'", null);
// 0,
Toast.makeText(MainHelloSqlite.this, " " + long2 + " ",
Toast.LENGTH_SHORT).show();
//
updateSpinner();
break;
// 'pic5.jpg'
case R.id.Button03:
cv.put("fileName", "pic0.jpg");
cv.put("description", " 0");
//
int long3 = db.update("pic", cv, "fileName='pic5.jpg'", null);
// 0,
Toast.makeText(MainHelloSqlite.this, " " + long3 + " ",
Toast.LENGTH_SHORT).show();
//
updateSpinner();
break;
//
case R.id.Button04:
Cursor c = db.query("pic", null, null, null, null,
null, null);
//cursor.getCount()
Toast.makeText(MainHelloSqlite.this,
" " + c.getCount() + " , :",
Toast.LENGTH_SHORT).show();
//
for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
Toast.makeText(MainHelloSqlite.this,
" "+ c.getInt(0) +" , " + c.getString(1) + ", "+c.getString(2),
Toast.LENGTH_SHORT).show();
}
//
updateSpinner();
break;
}
}
};
//
b1.setOnClickListener(ocl);
b2.setOnClickListener(ocl);
b3.setOnClickListener(ocl);
b4.setOnClickListener(ocl);
}
//
public void initDatabase(SQLiteDatabase db) {
ContentValues cv = new ContentValues();
cv.put("fileName", "pic1.jpg");
cv.put("description", " 1");
db.insert(table_name, "", cv);
cv.put("fileName", "pic2.jpg");
cv.put("description", " 2");
db.insert(table_name, "", cv);
cv.put("fileName", "pic3.jpg");
cv.put("description", " 3");
db.insert(table_name, "", cv);
cv.put("fileName", "pic4.jpg");
cv.put("description", " 4");
db.insert(table_name, "", cv);
}
//
public void updateSpinner() {
// UI
final TextView tv = (TextView) findViewById(R.id.TextView02);
Spinner s = (Spinner) findViewById(R.id.Spinner01);
// Cursor
final Cursor cursor = db.query("pic", null, null, null, null, null,
null);
//
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, cursor, new String[] {
"fileName", "description" }, new int[] {
android.R.id.text1, android.R.id.text2 });
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//
s.setAdapter(adapter);
//
OnItemSelectedListener oisl = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
cursor.moveToPosition(position);
tv.setText(" pic :" + cursor.getString(2));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
//
s.setOnItemSelectedListener(oisl);
}
//
@Override
public void onDestroy() {
super.onDestroy();
db.delete(table_name, null, null);
updateSpinner();
}
}
5.프로그램 실행,결과 보기:이 예 는 SQLiteDatabase 가 봉 인 된 insert,delete,update,query 방법 을 사용 합 니 다.관심 있 는 학생 들 은 SQLiteDatabase 의 execSQL()방법 과 rawQuery()방법 으로 이 루어 집 니 다.자,본 강 은 여기까지.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.