MainActivity
package com.example.boostcoursepractice;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import java.net.URL;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
EditText editText ;
EditText editText2 ;
EditText editText3 ;
EditText editText4 ;
EditText editText5 ;
TextView textView;
SQLiteDatabase database ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
editText3 = (EditText) findViewById(R.id.editText3);
editText4 = (EditText) findViewById(R.id.editText4);
editText5 = (EditText) findViewById(R.id.editText5);
textView = (TextView) findViewById(R.id.textView);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String databaseName = editText.getText().toString();
openDatabase(databaseName);
}
});
Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String tableName = editText2.getText().toString();
createTable(tableName);
}
});
Button button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = editText3.getText().toString().trim();
String ageStr = editText4.getText().toString().trim();
String mobile = editText5.getText().toString().trim();
int age = -1 ;
try{
age = Integer.parseInt(ageStr);
}catch (Exception e) {
e.printStackTrace();
}
insertData(name, age, mobile);
}
});
Button button4 = (Button) findViewById(R.id.button4);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String tableName = editText2.getText().toString();
selectData(tableName);
}
});
}
public void openDatabase(String databaseName)
{
println("openDatabase() 호출됨");
database = openOrCreateDatabase(databaseName, MODE_PRIVATE, null);
if(database != null)
{
println("데이터 베이스 오픈됨");
}
}
public void createTable(String tableName)
{
println("crateTable() 호출됨");
if(database !=null)
{
String sql = "create table " + tableName + "(_id integer PRIMARY KEY autoincrement , name text, age integer, mobile text) ";
database.execSQL(sql);
println("테이블 생성됨.");
}else{
println("먼저 데이터베이스를 오픈하세요");
}
}
public void insertData(String name, int age, String mobile)
{
println("insertData() 호출됨");
if(database != null)
{
String sql = "insert into customer(name, age, mobile) values(?,?,?)";
Object[] params = {name, age, mobile};
database.execSQL(sql, params);
println("데이터 추가됨");
}else{
println("먼저 데이터베이스를 오픈하세요.");
}
}
public void selectData(String tableName)
{
println("selectData() 호출됨");
if(database != null)
{
String sql = "select name, age, mobile from " + tableName ;
Cursor cursor = database.rawQuery(sql, null);
println("조회된 데이터 개수 : " + cursor.getCount());
for(int i=0 ; i<cursor.getCount() ; i++)
{
cursor.moveToNext();
String name = cursor.getString(0);
int age = cursor.getInt(1);
String mobile = cursor.getString(2) ;
println("#" + i + "->" + name + ", " + age + ", " + mobile);
}
cursor.close();
}
}
public void println(String s)
{
textView.append(s+"\n");
}
}
activity_mail.xml
우선 데이터 베이스를 구성하고 관리하는데는 4가지 단계가 있다. 데이터베이스를 1.오픈하고 2.테이블을 만들고 데이터를 3.추가하고 4.조회하고 일단 오픈 하는 코드는
SQLiteDatabase database = openOrCreateDatabase(databaseName, MODE_PRIVATE, null);
위와 같고 테이블을 만들고 데이터를 추가할 때는 아래와 같이
String sql = "create table " + tableName + "(_id integer PRIMARY KEY autoincrement , name text, age integer, mobile text) ";
database.execSQL(sql);
String sql = "insert into customer(name, age, mobile) values(?,?,?)";
Object[] params = {name, age, mobile};
database.execSQL(sql, params);
SQLiteDatabase의 execSQL()의 매개변수로 sql문을 넘겨 실행시킨다.
마지막으로 조회는
String sql = "select name, age, mobile from " + tableName ;
Cursor cursor = database.rawQuery(sql, null);
println("조회된 데이터 개수 : " + cursor.getCount());
for(int i=0 ; i<cursor.getCount() ; i++)
{
cursor.moveToNext();
String name = cursor.getString(0);
int age = cursor.getInt(1);
String mobile = cursor.getString(2) ;
println("#" + i + "->" + name + ", " + age + ", " + mobile);
}
cursor.close();
위와 같이 SQLiteDatabase의 rawQuery()를 이용하여 리턴 값으로 Cursor를 받고 커서의 getCount()로 레코드의 개수를 파악하고 cursor.moveToNext()로 다음 레코드로 넘어가고 cursor.getString(0), cursor.getInt(1) 같은 것들로 현재 레코드의 얻고자하는 컬럼 번호를 지정하여 데이터를 가져와야 한다.
'2019 summer 부스트코스 에이스(안드로이드 프로그래밍) > 6. 데이터베이스' 카테고리의 다른 글
6-5-1 인터넷 연결상태 확인하기 (0) | 2019.08.25 |
---|---|
6-4-1 헬퍼 사용하기 (0) | 2019.08.25 |