개인공부용123 프로그래밍 블로그

[안드로이드 스튜디오] 데이터베이스 -1- 본문

Android Studio

[안드로이드 스튜디오] 데이터베이스 -1-

개인공부용123 2016. 11. 3. 00:00


모바일 데이터베이스


안드로이드 프로젝트를 진행하다 보면 Data를 계속적으로 보관하고 사용해야 하는 경우가 생기는데 이떄 DataBase(DB) 라는 저장공간에을 사용하게 됩니다.

이런 경우를 대비해서 안드로이드에서는 SQLite라는 
DataBase 를 포함하고있는데 , 만약 Data를 저장해서 사용하게 되는 경우가 생길 경우  SQLite를 사용해서 좀더 편리하게 DataBase를 관리 할 수 있습니다.


 데이터베이스와 테이블 만들기


Context클래스에 정의된 메소드

1. SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) : 데이터 베이스를 생성하는 메소드입니다.


- 인자 -

String name : 데이터베이스의 이름


int mode : 사용모드이고 MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE 중 하나를 사용할수있습니다.

(MODE_WORLD_READABLE와 MODE_WORLD_WRITEABLE 모드는 다른어플리케이션에서 데이터베이스 파일에 접근 할 수 있도록 해줍니다.)


SQLiteDatabase.CursorFactory factory : (선택적 지정) NULL이 아닌 객체를 지정시 쿼리의 결과값으로 리턴되는 커서를 만들어낼 객체가 전달됩니다. 


2. boolean deleteDatavase(String name) : 데이터베이스의 이름을 전달받아 데이터를 삭제하고 정상적으로 삭제되었을시 true를 반환합니다.


- 인자 -

String name : 데이터베이스의 이름


- 코    드 -


- main.xml -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="10dp" >

<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
>
<Button
android:id="@+id/createDatabaseBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="120dp"
android:text="데이터베이스 생성"
android:textSize="14dp"
/>
<EditText
android:id="@+id/databaseNameInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="데이터베이스 이름 입력"
android:text="customer.db"
android:textSize="18dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
>
<Button
android:id="@+id/createTableBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="120dp"
android:text="테이블 생성"
android:textSize="14dp"
/>
<EditText
android:id="@+id/tableNameInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="테이블 이름을 입력"
android:text="employee"
android:textSize="18dp"
/>
</LinearLayout>
<TextView
android:id="@+id/status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="상태 : "
android:textSize="14dp"
android:paddingLeft="10dp"
android:layout_marginTop="10dp"
/>

</LinearLayout>

- MainActivity -


package org.androidtown.database;

import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

String databaseName;
String tableName;
TextView status;
boolean databaseCreated = false;
boolean tableCreated = false;

SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final EditText databaseNameInput = (EditText) findViewById(R.id.databaseNameInput);
final EditText tableNameInput = (EditText) findViewById(R.id.tableNameInput);

Button createDatabaseBtn = (Button) findViewById(R.id.createDatabaseBtn);
createDatabaseBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
databaseName = databaseNameInput.getText().toString();
createDatabase(databaseName);
}
});

Button createTableBtn = (Button) findViewById(R.id.createTableBtn);
createTableBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
tableName = tableNameInput.getText().toString();
createTable(tableName);
int count = insertRecord(tableName);
println(count + " records inserted.");
}
});

status = (TextView) findViewById(R.id.status);

}

private void createDatabase(String name) {
println("creating database [" + name + "].");

try {
db = openOrCreateDatabase(
name,
Activity.MODE_PRIVATE,
null);

databaseCreated = true;
println("database is created.");
} catch(Exception ex) {
ex.printStackTrace();
println("database is not created.");
}
}

private void createTable(String name) {
println("creating table [" + name + "].");

db.execSQL("create table if not exists " + name + "("
+ " _id integer PRIMARY KEY autoincrement, "
+ " name text, "
+ " age integer, "
+ " phone text);" );

tableCreated = true;
}

private int insertRecord(String name) {
println("inserting records into table " + name + ".");

int count = 3;
db.execSQL( "insert into " + name + "(name, age, phone) values ('John', 20, '010-7788-1234');" );
db.execSQL( "insert into " + name + "(name, age, phone) values ('Mike', 35, '010-8888-1111');" );
db.execSQL( "insert into " + name + "(name, age, phone) values ('Sean', 26, '010-6677-4321');" );

return count;
}

private void println(String msg) {
Log.d("MainActivity", msg);
status.append("\n" + msg);

}

}



execSQL메소드는 SQL문을 메소드로 호출받아서 실행시키는 함수입니다.

(SQL문을 모르시면 구글에 "SQL쿼리"를 검색해보시면 많은 예제들이 나옵니다.)



※ Do it 안드로이드 앱 프로그래밍 참조하였습니다.