개인공부용123 프로그래밍 블로그
[안드로이드 스튜디오] 데이터베이스 -1- 본문
모바일 데이터베이스
안드로이드 프로젝트를 진행하다 보면 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 안드로이드 앱 프로그래밍 참조하였습니다.
'Android Studio' 카테고리의 다른 글
[안드로이드 스튜디오] 쓰레드 -2- (0) | 2016.11.08 |
---|---|
[안드로이드 스튜디오] 쓰레드 -1- (1) | 2016.11.07 |
[안드로이드 스튜디오] 메모장만들기 (1) | 2016.11.07 |
[안드로이드 스튜디오] 데이터베이스 -3- (1) | 2016.11.04 |
[안드로이드 스튜디오] 데이터베이스 -2- (0) | 2016.11.03 |