[챕터 2-10-1] SQLite 데이터베이스

2020. 2. 19. 15:32Android/Android 챕터 2-10

반응형

결과화면

생성할 DB명 : minodb

생성할 테이블명 : customer 

입력 후 

DB 생성 버튼과 테이블 생성 버튼 클릭해서 진행

데이터 조회 버튼 클릭 시, customer 테이블의 데이터 조회해서 출력됨

레코드 추가 버튼 클릭 후

조회하면 3개의 레코드 확인

 


 프로젝트명 : MyDatabase

 

각 하위 리니어레이아웃 

- 레이아웃 높이 : wrap_content

 


MainActivity.java

 

더보기
package org.minokuma.mydatabase;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    EditText editText;
    EditText editText2;
    TextView textView;

    SQLiteDatabase sqLiteDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);
        editText2 = findViewById(R.id.editText2);
        textView = findViewById(R.id.textView);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String databaseName = editText.getText().toString();
                createDatabase(databaseName);
            }
        });

        Button button2 = findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String tableName = editText2.getText().toString();
                createTable(tableName);
            }
        });

        Button button3 = findViewById(R.id.button3);
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                insertRecord();
            }
        });

        Button button4 = findViewById(R.id.button4);
        button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                executeQuery();
            }
        });

    }

    public void createDatabase(String databaseName){
        println("createDatabase()");
        sqLiteDatabase = openOrCreateDatabase(databaseName, MODE_PRIVATE, null);
        println("데이터베이스 생성됨 : " + databaseName);
    }

    public void createTable(String tableName){
        println("createTable()");

        if(sqLiteDatabase == null){
            println("DB를 먼저 열어주세요.");
            return;
        }
        String sql = "create table if not exists " + tableName + "(" +
                         "_id integer PRIMARY KEY autoIncrement," +
                         "name text," +
                         "age integer," +
                         "mobile text" +
                     ")";
        sqLiteDatabase.execSQL(sql);
        println("테이블 생성됨 : " + tableName);
    }

    public void insertRecord(){
        println("insertRecord()");
        if(sqLiteDatabase == null){
            println("DB를 먼저 열어주세요.");
            return;
        }

        String tableName = editText2.getText().toString();
        if (tableName == null){
            println("테이블 명을 입력하세요.");
            return;
        }

        String sql = "insert into " + tableName + "(" +
                "name, age, mobile" +
                ") values (" +
                "'MINOKUMA', 35, '010-1000-1000'" +
                ")";
        sqLiteDatabase.execSQL(sql);
        println("레코드 추가됨");
    }


    public void executeQuery(){
        println("executeQuery()");

        if(sqLiteDatabase == null){
            println("DB를 먼저 열어주세요.");
            return;
        }

        String tableName = editText2.getText().toString();
        if(tableName == null){
           println("테이블 명을 입력하세요.");
           return;
        }
        String sql = "select _id, name, age, mobile " +
                     "from " + tableName;

        Cursor cursor = sqLiteDatabase.rawQuery(sql, null);
        int recordCount = cursor.getCount();
        println("레코드 갯수 : " + recordCount);

        for(int i = 0; i < recordCount; i++){
            cursor.moveToNext();
            int id = cursor.getInt(0);
            String name = cursor.getString(1);
            int age = cursor.getInt(2);
            String mobile = cursor.getString(3);

            println("레코드 #" + i + " : " + id + ", " + name + ", " + age + ", " + mobile);
        }
        cursor.close();
    }


    public void println(String data){
        textView.append(data + "\n");
    }
}

 


SQLITE 다운로드 및 설치 후 재부팅

https://sqlitebrowser.org/dl/

 

Downloads - DB Browser for SQLite

Windows Our latest release (3.11.2) for Windows: Note - If for any reason the standard Windows release does not work (e.g. gives an error), try a nightly build (below). Nightly builds often fix bugs reported after the last release. 😄 macOS Our latest relea

sqlitebrowser.org


SQLite DB 브라우저 실행

 

데이터베이스 열기


안스 우측 하단 탭인 Device File Explore 클릭

> data

> data

> db저장기능이 있는 앱 디렉토리

> 생성한 db : 


다운로드할 db 선택 후 저장

다운로드 폴더 지정

에뮬레이터에서 PC로 DB 저장이 된 것을 확인 후

파일명 뒤에 확장자는 .db 를 붙여준다.

 


SQLite 로 저장한 DB 를 열어보면, 위에서 생성했던 테이블 확인 가능

 

 


애뮬레이터에서 SQL을 실행했던 데이터들이 들어있음을 확인

 


 

 

 

반응형

'Android > Android 챕터 2-10' 카테고리의 다른 글

[챕터 2-10-4] 연락처 프로필 정보 조회  (0) 2020.02.19
[챕터 2-10-3] 앨범  (0) 2020.02.19
[챕터 2-10-2] 프로바이더  (0) 2020.02.19