[챕터 2-10-1] SQLite 데이터베이스
2020. 2. 19. 15:32ㆍAndroid/Android 챕터 2-10
반응형
결과화면
생성할 DB명 : minodb
생성할 테이블명 : customer
입력 후
DB 생성 버튼과 테이블 생성 버튼 클릭해서 진행
데이터 조회 버튼 클릭 시, customer 테이블의 데이터 조회해서 출력됨
레코드 추가 버튼 클릭 후
조회하면 3개의 레코드 확인
프로젝트명 : MyDatabase
각 하위 리니어레이아웃
- 레이아웃 높이 : wrap_content
MainActivity.java
더보기
package org.minokuma.mydatabase;
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText editText;
EditText editText2;
TextView textView;
SQLiteDatabase sqLiteDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
editText2 = findViewById(R.id.editText2);
textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String databaseName = editText.getText().toString();
createDatabase(databaseName);
}
});
Button button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tableName = editText2.getText().toString();
createTable(tableName);
}
});
Button button3 = findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
insertRecord();
}
});
Button button4 = findViewById(R.id.button4);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeQuery();
}
});
}
public void createDatabase(String databaseName){
println("createDatabase()");
sqLiteDatabase = openOrCreateDatabase(databaseName, MODE_PRIVATE, null);
println("데이터베이스 생성됨 : " + databaseName);
}
public void createTable(String tableName){
println("createTable()");
if(sqLiteDatabase == null){
println("DB를 먼저 열어주세요.");
return;
}
String sql = "create table if not exists " + tableName + "(" +
"_id integer PRIMARY KEY autoIncrement," +
"name text," +
"age integer," +
"mobile text" +
")";
sqLiteDatabase.execSQL(sql);
println("테이블 생성됨 : " + tableName);
}
public void insertRecord(){
println("insertRecord()");
if(sqLiteDatabase == null){
println("DB를 먼저 열어주세요.");
return;
}
String tableName = editText2.getText().toString();
if (tableName == null){
println("테이블 명을 입력하세요.");
return;
}
String sql = "insert into " + tableName + "(" +
"name, age, mobile" +
") values (" +
"'MINOKUMA', 35, '010-1000-1000'" +
")";
sqLiteDatabase.execSQL(sql);
println("레코드 추가됨");
}
public void executeQuery(){
println("executeQuery()");
if(sqLiteDatabase == null){
println("DB를 먼저 열어주세요.");
return;
}
String tableName = editText2.getText().toString();
if(tableName == null){
println("테이블 명을 입력하세요.");
return;
}
String sql = "select _id, name, age, mobile " +
"from " + tableName;
Cursor cursor = sqLiteDatabase.rawQuery(sql, null);
int recordCount = cursor.getCount();
println("레코드 갯수 : " + recordCount);
for(int i = 0; i < recordCount; i++){
cursor.moveToNext();
int id = cursor.getInt(0);
String name = cursor.getString(1);
int age = cursor.getInt(2);
String mobile = cursor.getString(3);
println("레코드 #" + i + " : " + id + ", " + name + ", " + age + ", " + mobile);
}
cursor.close();
}
public void println(String data){
textView.append(data + "\n");
}
}
SQLITE 다운로드 및 설치 후 재부팅
SQLite DB 브라우저 실행
데이터베이스 열기
안스 우측 하단 탭인 Device File Explore 클릭
> data
> data
> db저장기능이 있는 앱 디렉토리
> 생성한 db :
다운로드할 db 선택 후 저장
다운로드 폴더 지정
에뮬레이터에서 PC로 DB 저장이 된 것을 확인 후
파일명 뒤에 확장자는 .db 를 붙여준다.
SQLite 로 저장한 DB 를 열어보면, 위에서 생성했던 테이블 확인 가능
애뮬레이터에서 SQL을 실행했던 데이터들이 들어있음을 확인
반응형
'Android > Android 챕터 2-10' 카테고리의 다른 글
[챕터 2-10-4] 연락처 프로필 정보 조회 (0) | 2020.02.19 |
---|---|
[챕터 2-10-3] 앨범 (0) | 2020.02.19 |
[챕터 2-10-2] 프로바이더 (0) | 2020.02.19 |