본문 바로가기
Front-end/Android (안드로이드 앱 개발)

Android Studio , SQLite

by javapp 자바앱 2020. 8. 14.
728x90

SQLite는 데이터베이스 관리 시스템이지만

응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다.

 

 

1.

public class DBHelper extends SQLiteOpenHelper
{
    public DBHelper(Context context){
        super(context,"Test.db",null,1); //버전 수정 가능
    }

    // 사용할 db가 없을 경우 db 파일 새롭게 만듬
    // 자동 호출. 테이블 생성, 기타 필요한 작업업
   @Override
    public void onCreate(SQLiteDatabase db) { //항상 최신구조
        Log.d("test","db 생성");

        String sql ="CREATE TABLE TestTable("
                +"idx INTEGER PRIMARY KEY AUTOINCREMENT,"
                +"textData TEXT NOT NULL,"
                +"intData INTEGER NOT NULL,"
                +"floatData REAL NOT NULL,"
                +"dateData DATE NOT NULL)";
        db.execSQL(sql);
    }

    //버전관리
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        switch (oldVersion)
        {
            case 1:
                //1에서 2버전 형태로 테이블 구조를 변경 작업
            case 2:
                //2에서 3버전으로
        }
    }
}

 

 

 


 

 

<사용>

public void btnOpenDB(View view) {
        DBHelper helper = new DBHelper(this);
        SQLiteDatabase db = helper.getWritableDatabase();

        String sql = "INSERT INTO TestTable (textData, intData, floatData, dateData) VALUES (?,?,?,?)";

        //===============데이터 준비================//
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
        String date = sdf.format(new Date());

        String[] arg1 = {"문자열1", "100", "1.1", date};
        String[] arg2 = {"문자열2", "200", "1.2", date};

        db.execSQL(sql, arg1);
        db.execSQL(sql, arg2);

        db.close();

        textView.setText("완료");
    }

    public void btnLoadDB(View view) {
        DBHelper helper = new DBHelper(this);
        SQLiteDatabase db = helper.getWritableDatabase();

        String sql = "select * from TestTable";
//        String[] arg1 ={"1"} //?에 값 넣을 때
        //쿼리 실행
        Cursor cursor = db.rawQuery(sql,null);
        textView.setText("");

        //선택된 로우를 끝까지 반복하며 데이터를 가져온다.
        while(cursor.moveToNext())
        {
            //컬럼 인덱스 번호를 통해 데이터를 가져온다.
            int idx = cursor.getInt(cursor.getColumnIndex("idx"));
            String textData = cursor.getString(cursor.getColumnIndex("textData"));
            int intData = cursor.getInt(cursor.getColumnIndex("intData"));
            double floatData = cursor.getDouble(cursor.getColumnIndex("floatData"));
            String dateData = cursor.getString(cursor.getColumnIndex("dateData"));

            textView.append("idx"+idx+"\n");
            textView.append("textData"+textData+"\n");
            textView.append("intData"+intData+"\n");
            textView.append("floatData"+floatData+"\n");
            textView.append("dateData"+dateData+"\n");
        }
        db.close();
    }

    public void btnUpdateDB(View view)
    {
        DBHelper helper = new DBHelper(this);
        SQLiteDatabase db = helper.getWritableDatabase();

        String sql = "UPDATE TestTable SET textData = ? WHERE idx=?";
        String[] args = {"수정문자열","1"};

        db.execSQL(sql,args);
        db.close();

        textView.setText("수정완료");
    }

 

 

data - data - datebases


도움되는 사이트

 

https://www.sqlitetutorial.net/sqlite-create-table/

 

SQLite Create Table with Examples

In this tutorial, you will learn how to create a new table using SQLite CREATE TABLE statement with various options such as WITHOUT ROWID.

www.sqlitetutorial.net

 

 

https://www.sqlitetutorial.net/tryit/

 

SQLite Editor

 

www.sqlitetutorial.net

 

https://nuggy875.tistory.com/28

 

[Android] SQLiteException: no such table ... 갑자기?

SQLiteOpenHelper 를 사용하여 내부 Database를 잘 사용하고 있다가 어느 순간 다음과 같은 에러가 떴다. java.lang.RuntimeException: Unable to start activity ComponentInfo{...} ##########################..

nuggy875.tistory.com

 

댓글