Presentation is loading. Please wait.

Presentation is loading. Please wait.

Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 

Similar presentations


Presentation on theme: "Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. "— Presentation transcript:

1 Android Application 데이터베이 스

2 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다.  데이터베이스 사용 절차 데이터베이스와 테이블을 생성 이를 업그레이드하는 기능을 담당하는 DBHelper 클래스와 이 클래스를 사용해서 실제로 테이블에 질의를 날리는 DBHandler 클래스 생성. 비즈니스 로직에 의해 DBHandler 클래스를 호출하는 사용자 클래스 생성. 사용자 클래스 DBHandler 클래스 DBHelper 클래스 [ 사용 절차 ]  실제 데이터베이스를 사용하는 클래스를 작성할 때는 DBHelper 클래스부터 작성해야 한다.

3 데이터베이스 활용하 기  DBHelper 클래스 작성 – SQLiteOpenHelper 상속  SQLiteOpenHelper 클래스는 안드로이드에서 SQLite 를 사용할 수 있게 해주는 클 래스다. 그러므로 반드시 상속해야 한다. public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) {  DBHandler 클래스 작성 – DBHelper 클래스 이용  DBHandler 클래스에는 다음과 같이 db 객체를 사용해서 select 하거나 insert 하는 메소드를 작성한다. public long insert(String car_name) { ContentValues values = new ContentValues(); Values.put(“car_name”, car_name); return db.insert(“cars”, null, values); }  DB 사용자 클래스 작성 – DBHandler 클래스 이용 ‐사용자 클래스에서는 DBHandler 클래스에 작성된 메소드를 호출해서 사용하 는 코드를 작성한다. 이때 사용한 객체는 반드시 close() 메소드를 호출해서 자 원을 반환해야 한다. DBHandler dbhandler = DBHandler.open(this); dbhandler.insert(“SM5”); dbhandler.close();

4 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/carname" android:layout_width="120dp" android:layout_height="wrap_content" /> <Button android:id="@+id/insert" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=" 추가하기 " /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/select_id" android:layout_width="120dp" android:layout_height="wrap_content" /> <Button android:id="@+id/selectone" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=" 조회하기 " />............

5 DBHelper.java package com.example.database; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) { super(context, "dbdemo.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { String table = "CREATE TABLE cars (" + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "car_name TEXT NOT NULL);"; db.execSQL(table); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS cars"); onCreate(db); } } DBHelper 클래스는 SQLiteOpenHelper 클래스를 확장한 클래스다. SQLiteOpenHelper 에는 데이터베이스와 관련된 처리를 할 수 있는 메소드들이 준비가 되어 있기 때문에 생성자와 onCreate() 메소드, onUpgrade() 메소드만 작성하면 된다. 상위클래스 생성자 호출, 데이터베이스 이름, CursorFactory, 데이터베이스 버전 ( 버전은 데이터베이스가 변경될 때 증가 ) 설치된 데이터베이스의 버전과 새로 설치하는 애플리케이션 데이베이스 버전을 비교해서 다를 때 실행. 개발자가 기존 데이터베이스를 변경하는 코드를 작성해서 기존사용자의 데이터를 유지할 수 있도록 함.

6 DBHandler.java package com.example.database; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; public class DBHandler { private DBHelper helper; private SQLiteDatabase db; private DBHandler(Context ctx) { this.helper = new DBHelper(ctx); this.db = helper.getWritableDatabase(); } public static DBHandler open(Context ctx) throws SQLException { DBHandler handler = new DBHandler(ctx); return handler; } public void close() { helper.close(); }...... DBHandler 클래스에는 테이블과 관련된 메소드를 작성하면 된다. 테이블에 데이터를 추가하고, 삭제하며, 수정하는 등의 메소드를 작성하면 된다. getWritableDatabase() 는 쓰기 가능한 데이터베이스를 반환하는 메소드이며, 우리는 이 메소드가 반환한 데이터베이스 객체 (SQLiteDatabase) 를 사용해서 질의를 수행할 수 있다.

7 DBHandler.java public long insert(String car_name) { ContentValues values = new ContentValues(); values.put("car_name", car_name); return db.insert("cars", null, values); } public Cursor select(int id) throws SQLException { Cursor cursor = db.query(true, "cars", new String[] { "_id", "car_name" }, "_id" + "=" + id, null, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); } return cursor; } }...... query() 와 rawQuery() 메소드를 통해 데이터베이스에 질의를 할 수 있는데, query() 메소드는 질의를 수행하는 메소드이며, rawQuery() 메소드는 완전한 SQL 문장으로 질의를 수행하는 메소드이다.

8 MainActivity.java package com.example.database; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements View.OnClickListener { EditText carNameEdit; EditText selectIdEdit; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); carNameEdit = (EditText) findViewById(R.id.carname); selectIdEdit = (EditText) findViewById(R.id.select_id); ((Button) findViewById(R.id.insert)).setOnClickListener(this); ((Button) findViewById(R.id.selectone)).setOnClickListener(this); }......

9 public void onClick(View v) { DBHandler dbhandler = DBHandler.open(this); if (v.getId() == R.id.insert) { String carName = carNameEdit.getText().toString(); long cnt = dbhandler.insert(carName); if (cnt == -1) { Toast.makeText(this, carName + " 가 테이블에 추가되지 않았습니다.", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, carName + " 가 테이블에 추가되었습니다.", Toast.LENGTH_LONG).show(); } } else if (v.getId() == R.id.selectone) { String selectIdStr = selectIdEdit.getText().toString(); int selectId = Integer.parseInt(selectIdStr); MainActivity.java............ insert() 메소드는 테이블에 데이터를 이상 없이 추가하면 추가된 열의 아이디를 반환하며, 추가하지 못했을 경우 -1 을 반환. 이 값을 기준으로 테이블 추가 여부를 판단해서 토스트 메 시지를 나타낸다. Integer.parseInt() 메소드는 문자열을 int 값으 로 변경하는 메소드다. DBHandler 클래스에 작성한 select() 메소드가 int 형으로 인자를 받 게 되어 있어 사용한다.

10 MainActivity.java Cursor cursor = dbhandler.select(selectId); startManagingCursor(cursor); if (cursor.getCount() == 0) { Toast.makeText(this, " 데이터가 없습니다.", Toast.LENGTH_LONG).show(); } else { String name = cursor.getString(cursor.getColumnIndex("car_name")); Toast.makeText(this, " 자동차 이름 " + name, Toast.LENGTH_LONG).show(); } } dbhandler.close(); } }...... DBHandler 객체를 모두 사용했다면 close() 메소드를 호출하는 것 처럼 Cursor 객체도 더 이상 사용하지 않을 때 close() 메소드를 호 출해야 한다. 이 때 사용 할 수 있는 것이 startManagingCursor() 메소드이며, 이 메소드를 사용하면 Cursor 를 액티비티의 생명주기와 함께 관리할 수 있다. 즉, 액티비티가 종료되는 시점에 Cursor 의 close() 메소드를 호출 해준다.

11 12 데이터 조회 (id 값을 넣어 조회 ) 3 없는 데이터 조회 3 데이터 추가 edittext 에 추가 할 문자 넣기

12 [ 참고 ] 200 개의 단계별 예제로 배우는 안드로이드 4.0


Download ppt "Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. "

Similar presentations


Ads by Google