CHAP 14. 데이터베이스와 환경 설정.

Slides:



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

3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
일정 관리 다이어리 제작 JSP Programming with a Workbook. 학습 목표  사용자의 일정을 관리할 수 있는 다이어리에 대하여 알아보자. JSP Programming with a Workbook2.
CHAP. 2 안드로이드 개발 도구 설치. © 2012 생능출판사 All rights reserved 개발 과정의 개요.
삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml
6 메 뉴.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
CHAP 22. 블루투스.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
10. 예외 처리.
DB 프로그래밍 학기.
DB 프로그래밍 학기.
Android Application 애플리케이션 위젯.
CHAP 19. 구글맵.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java Seminar 6.
데이터베이스 PART 02 - Chapter 08 Do It! 안드로이드 앱 프로그래밍 Jun. 2013
Ch.07-5 xml-rpc 사용하기 김상엽.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
10장 예외 Lab 10-1.
UNIT 07 그림책 만들기 1/2 로봇 SW 콘텐츠 연구원 조용수.
CHAP 24. nfc와 앱위젯.
Lesson 5. 레퍼런스 데이터형.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Lesson 6. 형변환.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
CHAP 8. 그래픽.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
WinCE Device Driver 실습 #2
CHAP 6. 이벤트 처리.
KHS JDBC Programming 4 KHS
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
CHAP 13. 네트워크.
10장. 예외처리.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
CHAP 12. 리소스와 보안.
CHAP 13. 방명록 만들기 실습.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
유승석 FILE I/O File Input/Output 유승석 SD50 – C# & .NET Platform.
CHAP 3. 첫번째 애플리케이션.
CHAP 5. 레이아웃.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
CHAP 13. 서비스와 방송 수신자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
자바 5.0 프로그래밍.
CHAP 21. 전화, SMS, 주소록.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
JSP Programming with a Workbook
MIDP 네트워크 프로그래밍 ps lab 김윤경.
구조체(struct)와 공용체(union)
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
CHAP 15. 데이터 스토리지.
CHAP 5. 메뉴와 대화상자.
Presentation transcript:

CHAP 14. 데이터베이스와 환경 설정

데이터 스토리지

데이터를 저장하는 방법 공유 프레퍼런스(Shared Preferences) 내부 저장(Internal Storage) 키-값 쌍(key-value pair)으로 사적이고 기초적인 데이터를 저장한다. 내부 저장(Internal Storage) 사적인 데이터를 장치 메모리에 저장한다. 외부 저장(External Storage) 공유 데이터를 공유 외부 저장소에 저장한다. SQLite 데이터베이스(SQLite Databases) 구조화된 데이터를 사적인 데이터베이스에 저장한다. 네트워크 연결(Network Connection) 데이터를 네트워크 서버를 사용하여서 웹에 저장한다.

공유 프레퍼런스 애플리케이션의 환경 설정 기초적인 자료형을 키-값 쌍으로 저장하고 복원할 수 있는 방법 기초적인 자료형을 키-값 쌍으로 저장하고 복원할 수 있는 방법 저장된 데이터는 사용자 애플리케이션이 종료되더 라도 저장

공유 프레퍼런스를 얻는 방법 getSharedPreferences(name, mode) getPreferences(mode)

프레퍼런스 파일에서 값을 읽거나 쓰는 메소드 getBoolean(String key, boolean defValue) getInt(String key, int defValue) getString(String key, String defValue) putBoolean(String key, boolean value) putInt(String key, int value) putString(String key, String value)

예제: 문자열을 프레퍼런스에 기록하고 읽는다. 문자열을 입력하고 BACK를 누르더라도 문자열이 없 어지지 않는 예제

예제: 사용자 인터페이스 작성 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="이미지 이름" > </TextView> <EditText android:id="@+id/EditText01" android:hint="여기에 이미지 이름을 입력하시오" android:text="" > </EditText> </LinearLayout>

예제: 액티비티 작성 public class PrefTest01Activity extends Activity { public static final String PREFS_NAME = "MyPrefs"; TextView name; EditText value; String imageName; @Override protected void onCreate(Bundle state){ super.onCreate(state); setContentView(R.layout.main); name = (TextView)findViewById(R.id.TextView01); value = (EditText)findViewById(R.id.EditText01); SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); imageName = settings.getString("imageName", ""); value.setText(imageName); } protected void onStop(){ super.onStop(); SharedPreferences.Editor editor = settings.edit(); imageName = value.getText().toString(); editor.putString("imageName", imageName); editor.commit();

실행 결과 Back 키 다시 실행

애플레케이션 환경 설정 예를 들어서 새로운 소식이 도착했을 때, 알림을 받 을 것인지, 받지 않을 것인지를 사용자가 설정

설정 화면 만들기 설정 화면은 Preference 클래스들을 XML 파일에 선 언하여서 만들어진다 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="first_preferencescreen"> <CheckBoxPreference android:key="wifi enabled" android:title="WiFi" /> android:key="second_preferencescreen" android:title="WiFi settings"> android:key="prefer wifi" android:title="Prefer WiFi" /> ... </PreferenceScreen>

예제: 애플리케이션 환경 설정

사용자 인터페이스 만들기 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBoxPreference android:key="check" android:title="진동여부" android:defaultValue="false" android:summary="체크하면 진동설정" /> <RingtonePreference android:key="ringtone" android:title="벨소리선택" android:showDefault="true" android:showSilent="true" android:summary="벨소리를 선택하시오" /> <EditTextPreference android:key="edit" android:title="음량선택" android:defaultValue="20" android:summary="음량을 선택하시오" /> </PreferenceScreen>

코드 작성 package kr.co.company.preftest02; import android.os.Bundle; import android.preference.PreferenceActivity; public class PrefTest02Activity extends PreferenceActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.layout.pref_activity); }

실행 화면

내부 공간에 파일 만들기 애플리케이션은 장치의 내부 저장 공간에 파일을 저 장할 수 있다. 내부 저장 공간에 저장되는 파일은 해당 애플리케이 션만 접근이 가능하다. 사용자가 애플리케이션을 제거하면 이들 파일들도 제거된다.

내부 공간에 파일 만들기: UI 설계 <LinearLayout ... <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> android:layout_weight="1" <EditText ... android:singleLine="false" /> </LinearLayout> android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button ... android:text="읽기"/> <Button ... android:text="쓰기"/>

내부 공간에 파일 만들기 public class FileTest01Activity extends Activity { String FILENAME = "test.txt"; EditText edit; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edit = (EditText) findViewById(R.id.EditText01); Button readButton = (Button) findViewById(R.id.read); readButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { FileInputStream fis = openFileInput(FILENAME); byte[] buffer = new byte[fis.available()]; fis.read(buffer); edit.setText(new String(buffer)); fis.close(); } catch (IOException e) { } });

내부 공간에 파일 만들기 Button writeButton = (Button) findViewById(R.id.write); writeButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(edit.getText().toString().getBytes()); fos.close(); } catch (IOException e) { } });

실행 결과

외부 공간에 파일 만들기 외부 저장 공간은 착탈이 가능한 SD 카드 외부 저장 공간에 저장된 파일들은 누구나 읽을 수 있으며 사용자에 의해서 변경될 수 있다. 데이터를 읽기 전에 외부 미디어가 장착되어 있는지 를 확인

내부 공간과 외부 공간 비교

외부 미디어 장착 여부 검사 String state = Environment.getExternalStorageState(); if(state.equals(Environment.MEDIA_MOUNTED)) // 미디어에 쓰고 읽을 수 있다 else if(state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) // 미디어를 읽을 수 있다 else    // 쓰거나 읽을 수 없다

매니페스트 파일

예제: 외부 공간에 파일 만들기 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String state = Environment.getExternalStorageState(); if(state.equals(Environment.MEDIA_MOUNTED)==false){ Toast.makeText(this,"외부 스토리지 실패",Toast.LENGTH_SHORT).show(); } edit = (EditText) findViewById(R.id.EditText01); Button readButton = (Button) findViewById(R.id.read); readButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { File file = new File(getExternalFilesDir(null), FILENAME); try { InputStream is; is = new FileInputStream(file); byte[] buffer = new byte[is.available()]; is.read(buffer); edit.setText(new String(buffer)); is.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); });

실행 결과

안드로이드에서의 데이터베이스 SQLite www.sqlite.org

데이터베이스

SQL

SQL의 예

결과 집합(Result Sets)과 커서(Cursors)

SQLiteOpenHelper 클래스 이용하여 데이터베이스 생성하기 class dbHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mycontacts.db"; private static final int DATABASE_VERSION = 2; public dbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE contact ( _id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, tel TEXT);"); public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS contact"); onCreate(db);

SQLiteOpenHelper 클래스 이용하여 데이터베이스 생성하기 public class DatabaseTest01 extends Activity { dbHelper helper; SQLiteDatabase db; public void onCreate(Bundle savedInstanceState) { ... helper = new dbHelper(this); try { db = helper.getWritableDatabase(); } catch (SQLiteException ex) { db = helper.getReadableDatabase(); } // 이제 필요할 때마다 db를 통하여서 SQL문장을 실행하면 된다. db.execSQL("INSERT INTO contact VALUES (null, '" + name + "', '" + tel + "');");

예제 연락처를 저장하고 검색하는 간단한 애플리케이션 를 작성하여 보자.

사용자 인터베이스 작성 다음과 같은 사용자 인터페이스를 작성한다.

코드 작성

코드 작성

코드 작성

실행 결과

SQLiteOpenHelper없이 데이터베이스 사용하기 db = openOrCreateDatabase(DATABASE_NAME, null); db.execSQL("CREATE TABLE contact ( _id INTEGER PRIMARY KEY AUTOINCREMENT, "+ "name TEXT, tel TEXT);"); …

데이터베이스와 어댑터 SimpleCursorAdapter 객체는 데이터베이스와 화면 을 연결한다. 데이터베이스에서 데이터를 읽어서 정해진 레이아 웃으로 화면에 표시한다.

코드 작성

코드 작성

실행 결과

Lab: 영화 데이터베이스 만들기

Lab: 영화 데이터베이스 만들기

사용자 인터페이스

데이터베이스 구조

소스 일부(다운로드 소스 참조)

소스 일부(다운로드 소스 참조)

실행 결과