์๋๋ก์ด๋ ์ฑ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์๋ฃ๋ค์ ์ ์ฅํด์ผํ ํ์์ฑ์ ๋๋ ๋๊ฐ ์๋ค.
ํ์๊ฐ์ผ๋ฉด ํด๋์ค ์ง๋ ฌํ๋ SharedPreferences๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋จํ ์๋ฃ๋ค์ ์ ์ฅํ ์ ์๊ฒ ์ง๋ง,
๋ง์ฝ ๋ฉ๋ชจ์ฅ, ํผํธ๋์ค ๊ด๋ฆฌ ์ฑ ๊ฐ์ ๊ฒ์ ๊ฐ๋ฐํ๋ ค๋ฉด ๋ค๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋๋ฐ ์์ ๋ฐฉ๋ฒ์ผ๋ก ๋ง์ ๋ฐ์ดํฐ๋ฅผ
์ ์ฅํ๊ธฐ์๋ ํ๊ณ๊ฐ ์๋ค.
๋คํ์ด ์๋๋ก์ด๋์์๋ ์ฟผ๋ฆฌ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฏธ๋ DB์ธ SQLite๋ฅผ ์ง์ํ๊ณ ์๋ค.
์จ๋ผ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ด ์๋ ์๋๋ก์ด๋ ๋ด๋ถ ์ ์ฅ์ฅ์น์ DB๋ฅผ ์์ฒด์ ์ผ๋ก ๋ง๋ค๊ณ ํ ์ด๋ธ์ ์์ฑํ๊ณ
์ญ์ ํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ์๋ SQLite๋ฅผ ์ด์ฉํด ์์ฃผ ๊ฐ๋จํ๊ฒ ์ฝ๋ฉ๋ด์ฉ๋ง ๋ณด์ฌ์ฃผ๊ณ ๋๋ผ ์์ ์ด๋ค.
์์
์ฐ์ DBHelper๋ผ๋ ์ด๋ฆ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์คฌ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํด๋์ค์ SQLiteOpenHelper๋ฅผ ์์์ํค๊ณ ๊ตฌํ์ ํด์ฃผ๋ฉด ๋๋ค.
๊ทผ๋ฐ ์ ๊ตณ์ด SQLiteDatabase ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ๋ง๋ค๋ฉด๋์ง Helper๋ฅผ ์ฌ์ฉํ๋..
SQLiteDatabase๋ง ์ฌ์ฉํ๊ฒ ๋๋ฉด DB๊ด๋ฆฌ๋ฅผ ํ๋ ๊ฒ ์๋นํ ๋ถ์์ ํ๋ค๊ณ ํ๋ค.
๊ทธ๋์ SQLiteOpenHelper๋ฅผ ์ด์ฉํด์ ์ฒด๊ณ์ ์ผ๋ก DB๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค.
์ด์ SQLiteOpenHelper๋ฅผ ์ด์ฉํ ํด๋์ค์ ๋ด์ฉ๋ฌผ์ ํ์ธํด ๋ณด์
DbHelper.java
public class DbHelper extends SQLiteOpenHelper {
static String DbName = "MyLittleDB.db"; //์ ์ฅํ DB์ ์ด๋ฆ
static int DbVersion = 1; //DB์ ๋ฒ์ ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋๋ง๋ onUpgrade๊ฐ ํธ์ถ๋จ
public DbHelper(@Nullable Context context) {
super(context, DbName, null, DbVersion);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String query="CREATE TABLE studentTbl(studentNum INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT)";
sqLiteDatabase.execSQL(query);
//์ฒ์ ์คํ์ 1๋ฒ ์คํ ๋ง์ฝ ๋ฒ์ ์ด ์ด์ ๊ณผ ๋ค๋ฅธ๊ฒ ์๋ค๋ฉด ์คํ์ํจ.
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
String query = "DROP TABLE studentTbl";
sqLiteDatabase.execSQL(query);
onCreate(sqLiteDatabase);
//๋ฒ์ ์ด ์ฌ๋ผ๊ฐ์ผ๋ ์ด๊ธฐํ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ
์ด๋ธ์ ์ง์ฐ๊ณ ๋ค์ ๋ง๋ฆ
}
}
DbHelper ๋ผ๋ ์์ฑ์ ์์๋ ๋ค๋ฃจ๊ณ ์ ํ Db์ ์ด๋ฆ๊ณผ ๋ฒ์ ๋ฑ์ ๋ช ์ํ๊ณ ์๋ค.
onCreate ์์ ๋ด์ฉ์ Db๊ฐ ์์ ์๋ก ๋ง๋ค์ด์ง ๊ฒฝ์ฐ ํ๋ฒ๋ง ์คํ์ด ๋๊ณ ๊ทธ ํ๋ก๋ ์คํ์ด ์๋๋ค. ์ฌ๊ธฐ์ ํ ์ด๋ธ์ ๋ง๋ค๋ฉด ๋๋ค
onUpgrade ์์ ๋ด์ฉ์ DB์ ๋ฒ์ ์ ์ฌ๋ผ๊ฐ๋ฉด ์คํ์ด ๋๋๋กํ๋ค. ๋ฐ๋ผ์ ์ฌ๊ธฐ์ ํด์ค ์ผ์ ํ ์ด๋ธ์ ์ญ์ ํ๊ณ ์ฌ์์ฑํด์ฃผ๋ ์ผ์ด๋ค.
์ด์ ์ค์ ๋ก DB๋ฅผ ์ด๋ป๊ฒ ๋ค๋ฃจ๋์ง ํจ ๋ณด์
DB์ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋๋ ์๋ ๋ด์ฉ์ ์ฌ์ฉํ๋ฉด ๋๋ค
DbHelper dbHelper = new DbHelper(this); //DBํฌํผ ํธ์ถ
SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); //์ฐ๊ธฐ ๋ชจ๋๋ก ์ ์ฉ
sqLiteDatabase.execSQL("INSERT INTO student VALUES(1,'๊น๋๋น')"); //์ฟผ๋ฆฌ๋ฌธ์ ์คํ
๋ฒํผ ํด๋ฆญ์ ๋ฐ๋ผ ๋ฐ์ํ๋๋ก ์ค๊ณํด์ ๋ง๋ค์ด๋ ๋๊ณ ์ํ๋ ๋๋ก ์๋๋๋๋ก ํ๋ฉด ๋๋ค.
๋ค๋ง SQLite๋ close()๋ฉ์๋๋ฅผ ์จ์ฃผ์ง ์์๋๋ฐ, ๊ณต์ํฌ๋ผ์์๋ ์๋๋ก์ด๋ ์์ฒด์ ์ผ๋ก Connection๊ด๋ฆฌ๊ฐ ์ ์ด๋ฃจ์ด์ง๋ค๋ณด๋ Close()๋ฅผ ์ฐ๋ฉด ์คํ๋ ค ์ฑ๋ฅ์ ํ๊ฐ ๋ ์ ์์ผ๋ ์์ฐ๋ ๊ฒ์ ๊ถ์ฅํ๋ค๊ณ ํ๋ค.
๋ค์์ DB์ ๋ด์ฉ์ ๊ฐ์ ธ์ฌ๋๋ ์๋ ๋ด์ฉ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
DbHelper dbHelper = new DbHelper(this); //Openhelper๊ฐ์ฒด ์์ฑ
SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase(); //์ฐ๊ธฐ๋ชจ๋๋ก ์ฌ์ฉ
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM student",null);
//์ฟผ๋ฆฌ๋ฌธ ์คํํ ๊ฒฐ๊ณผ๊ฐ์ cursor๊ฐ์ฒด์ ๋ด๊ธฐ
while(cursor.moveToNext()){//๊ฐ์ ธ์จ ๊ฒฐ๊ณผ๋ค์ ํํ ์๋งํผ ์ํ
textView.setText(cursor.getInt(0)+" : "+cursor.getString(1));
//ํ์ฌ ๊ฐ์ ธ์จ ํํ์ ๋์ฐ๋๋ก ํจ
}
์ฌ๊ธฐ์๋ ์ด์ ๋์์ค ๋์์ธ textView์ ๋ฐ์ดํฐ๋ค์ ์ถ๋ ฅํด ์ฃผ๋ ๊ฒ ๋ฟ์ด๋ค.
๋ฆฌ์คํธ๋ทฐ๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๋๊ฐ ์ข ๊ธธ์ด์ง ๊ฒ์ ์๊ฐํด์ ํ ์คํธ๋ทฐ๋ฅผ ์ด์ฉํ๋๋ฐ
์ด๋ ๊ฒ ๋๋ฉด ๊ฒฐ๊ตญ 5๊ฐ์ ํํ์ด ์๋ค ๊ฐ์ ํ ๊ฒฝ์ฐ 5๋ฒ ์ํ ํ ํ ๋งจ ๋ง์ง๋ง ๋ฐ์ดํฐ๋ง ๋ณด์ฌ์ง๊ฒ ๋ ๊ฒ์ด๋ค.
๋์ค์ ListView์ ๋์ฐ๊ณ ์ถ๋ค๋ฉด addItem์ ์ฌ์ฉํด์ฃผ๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์ ๊ฒ์ด๋ค.
๋ค์ ํฌ์คํ ์์๋ SQLite์ ๋ฐ์ดํฐ๋ค์ CustomListview์ ๋์ฐ๋ ๋ฐฉ๋ฒ์ ์ธ ๊ฒ์ด๋ค.