안드로이드에서 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","HelloAlpaca");
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[]{"Helloalpaca"});
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")));
}
출처 : https://popcorn16.tistory.com/76
'프로그래밍 > Android' 카테고리의 다른 글
[Android] 앱 빌드후 자동으로 실행되지 않을때 해결법 (0) | 2023.01.05 |
---|---|
[Android] MPAndroidChart 를 이용하여 Line Graph 만들기 (0) | 2022.12.30 |
[Android] XML에서 자동완성이 되지 않을경우 해결법 (0) | 2022.12.29 |
[Android] 지문인식 구현 (0) | 2022.12.26 |
[Android] *.db 파일 넣기 (SQLite) (0) | 2022.12.12 |
댓글