반응형
1. 안드로이드 내부 DB에 반려동물의 이름, 나이, 몸무게, 성별을 저장(insert)
2. DB 데이터를 읽어와서 표출 (select)
3. DB 데이터 초기화 (delete)
[아래 코드를 보실때 이해를 돕기위해 따로 적어놨습니다]
DATABASE_NAME = "data.db";
TABLE_NAME = "animal"
칼럼들 = {_id, name, age, weight, gender}
넣은 데이터 값 = {haru, 4, 13, w}, { inho, 5, 8, m}
DB로 쓸 java class파일을 하나 생성해줍니다.
[MySQLiteOpenHelper.java]
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "data.db";
public static final int DATABASE_VERSION = 1;
public MySQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table animal" +
"(_id integer primary key autoincrement," +
"name text, age text, weight text, gender text);";
db.execSQL(sql); // select를 제외한 모든 sql 명령어 실행
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "drop table if exists animal;";
db.execSQL(sql);
onCreate(db);
}
}
DB, table, 칼럼 명 다 원하시는대로 바꿔서 사용하시면 됩니다
MainActivity에 오셔서 상단부분에 DB 사용을 위해 필요한 코드를 입력해줍니다
[MainActivity.java]
public class MainActivity extends AppCompatActivity {
//DB호출
MySQLiteOpenHelper helper;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = new MySQLiteOpenHelper(this);
db = helper.getWritableDatabase(); // insert 를 위해 필요한 권한
db = helper.getReadableDatabase(); // select 를 위해 필요한 권한
// dbInsert();
// dbSelect();
// dbDelete();
}
private void dbInsert() {
ContentValues dbvalue = new ContentValues();
// 키, 값의 쌍으로 데이터 입력
dbvalue.put("name", "haru");
dbvalue.put("age", "4");
dbvalue.put("weight", "13");
dbvalue.put("gender", "w");
db.insert("animal", null, dbvalue);
// db.execSQL("INSERT INTO animal VALUES(null, 'inho', '5', '8', 'm');");
}
private void dbSelect() {
Cursor cursor;
cursor = db.rawQuery("SELECT * FROM animal", null);
if (cursor != null && cursor.getCount() != 0) {
while (cursor.moveToNext()) {
Log.d("db_id", cursor.getString(0));
Log.d("db_name", cursor.getString(1));
Log.d("db_age", cursor.getString(2));
Log.d("db_weight", cursor.getString(3));
Log.d("db_gender", cursor.getString(4));
}
}
cursor.close();
db.close();
}
private void dbDelete() {
helper = new MySQLiteOpenHelper(this);
db = helper.getWritableDatabase();
helper.onUpgrade(db, 1, 2);
db.close();
Toast.makeText(this, "DB가 초기화 되었습니다", Toast.LENGTH_SHORT).show();
return;
}
}
Insert
insert 방법은 두가지가 있습니다. 한가지 방법은 ContentResolver 가 처리 할 수 있는 값 집합을 저장한 후 insert하는 방법입니다.
ContentValues dbvalue = new ContentValues();
// 키, 값의 쌍으로 데이터 입력
dbvalue.put("name", "haru");
dbvalue.put("age", "4");
dbvalue.put("weight", "13");
dbvalue.put("gender", "w");
db.insert("animal", null, dbvalue);
다른 방법은 execSQL을 이용하여 insert하는 방법입니다.
db.execSQL("INSERT INTO animal VALUES(null, 'inho', '5', '8', 'm');");
편하신대로 골라서 사용하시면 됩니다!
Select, Delete
select, delete부분은 위에 전체 코드를 보시면 이해하시기 어렵지 않으실 겁니다
Log.d로 하단 Log로 db에 데이터가 들어간것을 조회할 수 있습니다.
궁금한점 있으시면 편하게 질문주세요
반응형
'앱 개발 > Java' 카테고리의 다른 글
[안드로이드] 웹 서버에 데이터 요청 (Open API 활용) (0) | 2022.03.30 |
---|---|
[안드로이드] 서버에 데이터 요청 및 응답 (소켓 통신) (0) | 2022.03.29 |
[안드로이드] 요일별 toggle button 만들기 - fragment + 해당 요일 가져오기 (0) | 2022.03.17 |
[안드로이드] CircleProgressBar 그리기 (github 라이브러리 사용) (0) | 2022.03.02 |
[Android] DB데이터 차트 표출 - MPAndroidChart (0) | 2022.02.24 |