Android SQLite 상세 설명 및 예시 코드

13979 단어 AndroidSQLite
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()방법 으로 이 루어 집 니 다.자,본 강 은 여기까지.

좋은 웹페이지 즐겨찾기