SQLite 사용법 / CRUD 예제
DB 생성
// DatabaseHandler.java
public class DatabaseHandler extends SQLiteOpenHelper {
public DatabaseHandler(@Nullable Context context) {
super(context, Util.DATABASE_NAME, null, Util.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
// 테이블 생성
String CREATE_CONTACT_TABLE = "create table " + Util.TABLE_NAME + "("+
Util.KEY_ID + " integer primary key, " +
Util.KEY_NAME + " text, " +
Util.KEY_PHONE + " text )";
sqLiteDatabase.execSQL(CREATE_CONTACT_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
// 기존의 contact 테이블을 삭제하고,
String DROP_TABLE = "drop table " +Util.TABLE_NAME;
sqLiteDatabase.execSQL(DROP_TABLE, new String[]{Util.DATABASE_NAME});
// 새롭게 테이블을 다시 만든다.
onCreate(sqLiteDatabase);
}
...
데이터 생성하는 함수
// DatabaseHandler.java
public void addContact(Contact contact){
// 데이터베이스를 가져온다.
SQLiteDatabase db = this.getWritableDatabase();
// 테이블의 컬럼이름과 해당 데이터를 매칭해서 넣어준다.
ContentValues values = new ContentValues();
values.put(Util.KEY_NAME, contact.name);
values.put(Util.KEY_PHONE, contact.phone);
// 데이터베이스에, 위의 데이터를 insert
db.insert(Util.TABLE_NAME, null, values);
// db를 닫아줘야 한다.
db.close();
}
// MainActivity.java
DatabaseHandler db = new DatabaseHandler(MainActivity.this);
// 주소록 데이터를 디비에 저장하는 코드
Contact contact = new Contact("홍길동", "010-1111-2222");
db.addContact(contact);
데이터 가져오는 함수
// DatabaseHandler.java
public ArrayList<Contact> getAllContacts() {
// 1. 데이터베이스를 가져온다.
SQLiteDatabase db = this.getReadableDatabase();
// 2. 쿼리문 만든다.
Cursor cursor = db.rawQuery("select * from contact", null);
ArrayList<Contact> contactList = new ArrayList<Contact>();
// if(cursor.moveToFirst()){
// for(int i = 0; i < cursor.getCount(); i++ ){
// Contact contact = new Contact(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
// contactList.add(contact);
// cursor.moveToNext();
// }
// }
if(cursor.moveToFirst()){
do{
Contact contact = new Contact(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
contactList.add(contact);
}while(cursor.moveToNext());
}
db.close();
return contactList;
}
// MainActivity.java
// 데이터를 디비에서 가져와서, 로그 찍기
ArrayList<Contact> contactList = db.getAllContacts();
for(Contact data : contactList){
Log.i("MyContact",
"id : " + data.id + " , name : "+data.name+" , phone : "+data.phone);
}
데이터 수정하는 함수
// DatabaseHandler.java
public void updateContact(Contact contact){
SQLiteDatabase db = this.getWritableDatabase();
// ContentValues values = new ContentValues();
// values.put(Util.KEY_NAME, contact.name);
// values.put(Util.KEY_PHONE, contact.phone);
//
// db.update(Util.TABLE_NAME, values,
// Util.KEY_ID + "=?", new String[]{contact.id+""});
// db.execSQL("update contact set name = '"+contact.name+"' , phone = '"+contact.phone+"' where id = "+contact.id);
db.execSQL("update contact set name = ? , phone = ? where id = ?" ,
new String[]{contact.name, contact.phone, contact.id+""});
db.close();
}
데이터 삭제하는 함수
// DatabaseHandler.java
public void deleteContact(Contact contact){
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from contact where id = ?" , new String[]{ contact.id+""});
db.close();
}
'안드로이드 스튜디오' 카테고리의 다른 글
[ 안드로이드 ] EditText 입력 변화 처리, TextWatcher 사용법 (0) | 2022.07.18 |
---|---|
[ 안드로이드 ] Serializable을 활용하여 액티비티에 객체 전달 (0) | 2022.07.18 |
[ 안드로이드 ] 어댑터(Adapter) 란? 어댑터 사용법 (0) | 2022.07.15 |
[ 안드로이드 ] 이메일 형식 체크하는 코드 (0) | 2022.07.13 |
[ 안드로이드 ] 데이터를 저장하는 SharedPreferences 사용법 (0) | 2022.07.13 |