Sponsored By
















헬퍼클래스(HelperClass) (=업데이트 등의 디비관리) 사용방법임.

 

 

 

※ 이전코드는 역시 아래 주소 참고. :

https://asterisco.tistory.com/70

 

 

 

 

 

 

 

 

 

00. 아래와같이 가장 아래쪽에 헬퍼클래스를 만들고 적절하게 코드를 수정하자. (정상작동확인을 위해 토스트추가.)

package com.example.joey.mydbdb;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    EditText editText;

    EditText editText2;

    TextView textView;

    String databaseName;

    SQLiteDatabase database;

    String tableName;

    CustomerDatabaseHelper databaseHelper;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editText);

        editText2 = (EditText) findViewById(R.id.editText02);

        textView = (TextView) findViewById(R.id.textView);

    }

 

    public void button01(View v) {

        databaseName = editText.getText().toString();

        try {

//            database = openOrCreateDatabase(databaseName, Context.MODE_PRIVATE, null);

 

            databaseHelper = new CustomerDatabaseHelper(getApplicationContext(), databaseName, null, 1 /*버전넘버*/);

            database = databaseHelper.getWritableDatabase();

            println("데이터베이스를 열었습니다. :" + databaseName);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

    public void button02(View v) {

//        createTable();

    }

 

    public void createTable(SQLiteDatabase db) {

        tableName = editText2.getText().toString();

 

        try {

            if (db != null) {  //database가 null 값이면 수행

                db.execSQL("CREATE TABLE if not exists " + tableName + "(" // 존재하지 않을때 생성하라

                        + "_id integer PRIMARY KEY autoincrement,"

                        + "name text, "

                        + "age integer, "

                        + "mobile text "

                        + ")");

                println("테이블을 만들었습니다. : " + tableName);

            } else {

                println("데이터베이스를 먼저 열어야 합니다.");

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

    public void changeTable(SQLiteDatabase db) { //데이터가 있는경우에

        try {

            if (db != null) {  //database가 null 값이면 수행

                db.execSQL("CREATE TABLE if not exists " + "PRODUCT" + "(" // 존재하지 않을때 생성하라

                        + "_id integer PRIMARY KEY autoincrement,"

                        + "name text, "

                        + "price integer "

                        + ")");

                println("테이블을 추가로 만들었습니다. : " + "PRODUCT");

            } else {

                println("데이터베이스를 먼저 열어야 합니다.");

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public void button03(View v) {

        try {

            if (tableName == null) {  //tableName이 null 값이면 수행

                tableName = editText2.getText().toString();

            }

            if (database != null) {

                database.execSQL("INSERT INTO " + tableName + "(name, age, mobile) VALUES"

                        + "('김사과', 20, '010-1234-5678')");

                println("데이터를 추가했습니다. ");

            } else {

                println("데이터베이스를 먼저 열어야 합니다.");

            }

 

 

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

    public void button04(View v) {

        try {

            if (tableName == null) {  //tableName이 null 값이면 수행

                tableName = editText2.getText().toString();

            }

            if (database != null) {

                Cursor cursor = database.rawQuery("SELECT name, age, mobile FROM " + tableName, null);

                int count = cursor.getCount();

                println("결과 레코드의 수 : " + count);

                for (int i = 0; i < count; i++) {

                    cursor.moveToNext();

                    String name = cursor.getString(0);

                    int age = cursor.getInt(1);

                    String mobile = cursor.getString(2);

                    println("레코드 #" + i + " : " + name + ", " + age + ", " + mobile);

                }

                cursor.close();

                println("데이터를 조회했습니다.");

            } else {

                println("데이터베이스를 먼저 열어야 합니다.");

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    private void println(String data) {

        textView.append(data + "\n");

    }

 

    class CustomerDatabaseHelper extends SQLiteOpenHelper {

 

        public CustomerDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {

            super(context, name, factory, version);

        }

 

        @Override

        public void onOpen(SQLiteDatabase db) {

            super.onOpen(db);

            Toast.makeText(getApplicationContext(), "Helper onOpen() 호출됨.", Toast.LENGTH_SHORT).show();

        }

 

        @Override

        public void onCreate(SQLiteDatabase db) {

            createTable(db);

            Toast.makeText(getApplicationContext(), "Helper onCreate() 호출됨.", Toast.LENGTH_SHORT).show();

        }

 

        @Override

        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

            changeTable(db);

            Toast.makeText(getApplicationContext(), "Helper onUpgrade() 호출됨. : " + oldVersion + "-> " + newVersion, Toast.LENGTH_SHORT).show();

        }

    }

}// main 종료







01. 실행시켜본다.







02. 데이터베이스열기를 눌러본다.

 

 

 

 

 

03. 헬퍼클래스로 작동 된것을 확인 할 수 있다.

 

 

 

 

 

04. 다시 메인Script로 돌아와서 버전정보를 2로 올려보자.








05. 다시한번 실행시켜보자.







06. 데이터베이스열기 버튼을 눌러보자.

 

 

 

 

 

07. 버전이 바뀌면서 안에 들어가있는 스키마도 같이 바뀌는 것을 확인 할 수 있다.

 

 

 

 

 

 

 



Sponsored By















+ Recent posts