본문 바로가기

major/Android

[Android] SQLite 사용법 정리

안드로이드에서 SQLite를 활용해서 db생성, insert문, delete문, update문, select문을 사용하는 방법을 정리했습니다.

1. DB 생성

DBHelper.java 파일을 하나 생성하고 아래의 코드를 복붙합니다.

public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE if not exists mytable ("
                + "_id integer primary key autoincrement,"
                + "txt text);";

        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "DROP TABLE if exists mytable";

        db.execSQL(sql);
        onCreate(db);
    }
}

db안에 mytable이라는 table을 생성하고, txt라는 text타입의 column을 생성했습니다.

여기서 _id integer은 SQLite를 사용하기 위해서는 무조건 필수인 column입니다.

없으면 "column '_id' does not exist"라는 에러가 뜨기 때문에 조심하세요.

 

그리고 나서 MainActivity.java에 다음을 처럼 코드를 추가합니다.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        DBHelper helper;
        SQLiteDatabase db;
        helper = new DBHelper(MainActivity.this, "newdb.db", null, 1);
        db = helper.getWritableDatabase();
        helper.onCreate(db);
    }
}

newdb라는 database에 mytable이라는 table을 생성하고, 수정가능하게 db를 불러옵니다.

이렇게 하면 db 생성은 끝입니다.

 

2. INSERT문 사용법

insert문은 간단합니다. 첫번째로는 ContentValues를 만들어서 column이름과 data를 넣고 db.insert()함수를 사용하면 됩니다.

ContentValues values = new ContentValues();
values.put("txt","HelloLlama");
db.insert("mytable",null,values);

execSQL를 사용한 방법도 있습니다.

String sql = "INSERT INTO mytable('txt') values('Bulgogi');";
db.execSQL(sql);

 

3. DELETE문 사용법

db.delete() 함수를 사용해서 구현할 수 있습니다.

db.delete("mytable","txt=?",new String[]{"Gogi"});

만약 where clauses가 1개 이상이라면 아래와 같이 AND문으로 구현 가능합니다.

db.delete("mytable","txt=? AND num=?",new String[]{"Gogi","1"});

sql문을 변경해서 execSQL함수를 사용해 DELETE를 구현할 수도있습니다.

String sql3 = "DELETE FROM mytable WHERE txt='Bulgogi';";
db.execSQL(sql3);

 

 

4. UPDATE문 사용법

db.update() 함수를 사용해서 구현할 수 있습니다.

ContentValues values = new ContentValues();
values.put("txt","Chicken");
db.update("mytable",values,"txt=?", new String[]{"HelloLlama"});

execSQL함수를 사용해서 구현할 수도 있습니다. 내용은 생략하겠습니다.

 

5. SELECT문 사용법

db.query() 함수를 사용해서 구현할 수 있습니다.

Cursor c = db.query("mytable",null,null,null,null,null,null,null);
while(c.moveToNext()){
	System.out.println("txt : "+c.getString(c.getColumnIndex("txt")));
}

실행 화면

SELECT문이 잘 실행되는것을 확인할 수 있습니다.

rawQuery() 함수를 사용해서 sql문으로 구현도 가능합니다.

String sql = "select * from mytable;";
Cursor c = db.rawQuery(sql, null);
while(c.moveToNext()){
	System.out.println("txt : "+c.getString(c.getColumnIndex("txt")));
}

 

기본적인 SQLite 사용법을 정리했습니다.

글이 너무 길어져서 여기서 마무리했습니다. 

다음 포스팅에서 SELECT문으로 가져온 데이터를 listview에 넣는 방법을 정리하겠습니다.


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D