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

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
2008 년 11 월 20 일 실습.  실험제목 ◦ 데이터베이스 커넥션 풀  목표 ◦ 데이터베이스 커넥션 풀의 사용.
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml
SQLite 소개 및 안드로이드에서의 사용법
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
Android Application 애플리케이션 위젯.
CHAP 19. 구글맵.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
Database Laboratory, Hong Ik University
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java Seminar 6.
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
데이터베이스 PART 02 - Chapter 08 Do It! 안드로이드 앱 프로그래밍 Jun. 2013
Ch.07-5 xml-rpc 사용하기 김상엽.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
MySQL 및 Workbench 설치 데이터 베이스.
JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.
5장 Mysql 데이터베이스 한빛미디어(주).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
CHAP 11. 액티비티와 인텐트.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Lesson 6. 형변환.
7주차 Android Application.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
CHAP 8. 그래픽.
자바 5.0 프로그래밍.
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
CHAP 6. 이벤트 처리.
14 SQLite DB 활용 B A S I C 1 4_ 고객 등록과 조회 L A B 1 4_ 수정과 삭제를 포함하는 고객관리시스템 Advanced LAB 14_ 탭 메뉴의 고객관리시스템.
KHS JDBC Programming 4 KHS
CHAP 14. 데이터베이스와 환경 설정.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
CHAP 13. 네트워크.
10장. 예외처리.
자바 5.0 프로그래밍.
You YoungSEok Oracle 설치 You YoungSEok
CHAP 12. 리소스와 보안.
7장 인터페이스와 추상 클래스.
CHAP 13. 방명록 만들기 실습.
CHAP 3. 첫번째 애플리케이션.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
CHAP 13. 서비스와 방송 수신자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
SQLite 소개 및 안드로이드에서의 사용법
자바 5.0 프로그래밍.
Power Java 제11장 상속.
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
15강_액티비티 액티비티란? 새로운 액티비티로 전환 생명주기 화면방향(Orientation)
 6장. SQL 쿼리.
CHAP 5. 메뉴와 대화상자.
Presentation transcript:

Android Application 데이터베이 스

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

데이터베이스 활용하 기  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();

activity_main.xml <LinearLayout xmlns: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:layout_width="120dp" android:layout_height="wrap_content" /> <Button 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:layout_width="120dp" android:layout_height="wrap_content" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text=" 조회하기 " />

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

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) 를 사용해서 질의를 수행할 수 있다.

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 문장으로 질의를 수행하는 메소드이다.

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 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); }......

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 형으로 인자를 받 게 되어 있어 사용한다.

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() 메소드를 호출 해준다.

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

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