슬라이드 1

Similar documents
2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

슬라이드 1

학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

어댑터뷰

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

Spring Boot/JDBC JdbcTemplate/CRUD 예제

03장

BLOB NULL Binary 데이터 값이존재하지않음 테이블의작성예 Create table contact_list( _id integer primary key autoincrement, name text not null, tel text not null default

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

SQLite v 소개 ü SQLite 라이브러리를통해완전한관계형데이터베이스 (RDBMS) 기능제공 ü 오픈소스 ü 표준준수 ü 경량 ü 단일계층 2

Microsoft PowerPoint App Fundamentals[Part1].pptx

쉽게 풀어쓴 C 프로그래밊

( )부록

Microsoft PowerPoint Python-DB

MySQL-.. 1

01장

PowerPoint Presentation

DBMS & SQL Server Installation Database Laboratory

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

Secure Programming Lecture1 : Introduction

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

슬라이드 1

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

PowerPoint 프레젠테이션

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

13ÀåÃß°¡ºÐ

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

PowerPoint Presentation

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

Design Issues

Microsoft PowerPoint - 04-UDP Programming.ppt

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

강의 개요

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

untitled

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

슬라이드 1

Microsoft PowerPoint - 10Àå.ppt

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

PowerPoint Presentation

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부

gnu-lee-oop-kor-lec06-3-chap7

PowerPoint 프레젠테이션

1부

Spring Data JPA Many To Many 양방향 관계 예제

C# Programming Guide - Types

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

제11장 프로세스와 쓰레드

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

rosaec_workshop_talk

화판_미용성형시술 정보집.0305

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

rmi_박준용_final.PDF

슬라이드 1

슬라이드 1

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

제8장 자바 GUI 프로그래밍 II

ALTIBASE HDB Patch Notes

chap 5: Trees

윈도우시스템프로그래밍

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - 2강

6장. SQL

Smart Power Scope Release Informations.pages

쉽게 풀어쓴 C 프로그래밍

JUNIT 실습및발표

13주-14주proc.PDF

MS-SQL SERVER 대비 기능

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

JAVA PROGRAMMING 실습 09. 예외처리

untitled

PowerPoint Presentation

09-interface.key

PowerPoint 프레젠테이션

Android Master Key Vulnerability

Microsoft PowerPoint Android-구조.애플리케이션 기초(1.0h).pptx

4S 1차년도 평가 발표자료

INAPP결제 API 가이드

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Tablespace On-Offline 테이블스페이스 온라인/오프라인

PowerPoint Presentation

PowerPoint 프레젠테이션

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

슬라이드 1

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

ThisJava ..

USER GUIDE

#한국사문제7회4급

Transcription:

9 강저장메커니즘

안드로이드데이터저장및관리기법 Shared Preferences 안드로이드 Java file IO SQLite Database

Android File system exploring 에뮬레이터의파일시스템을 adb 도구를이용해 shell 로탐색가능 Eclipse 의 DDMS, 를이용해탐색가능 Android 앱의 File system 영역. > adb shell > ls /data/app. eclipse > DDMS > File Explorer myapp.apk Activity Service AndroidManifast.xml Broadcast Content Provider Receiver install /data/app/<package_name>.apk /data/data/<package_name>/ data 영역 Preference 3 File: Context.openFileOutput Database

Preferences 특징 환경설정은안드로이드에서 <key-value> 쌍으로저장 / 조회할수있는메커니즘 저장형식은기본데이터타입, Maps, 배열로 XML파일로저장 보통애플리케이션의상태정보, 액티비티간의간단한데이터공유에주로사용 <key-value> 쌍의키의타입은문자열, 값은기본타입이어야한다. 설정정보는 Bundle과비슷하지만번들은저장기능이없음. 사용자는 SharedPreferences 를이용해데이터의조회및저장이가능

SharedPreference 종류앱을기준으로액티비티, 전체영역및 private 영역으로분류 ) getpreferences() /data/data/<package_name>/shared_prefs - 해당액티비티의설정정보에접근데이터를저장하는 XML 파일 - 액티비티의 private 영역에데이터를유지 <package_name>_preferences.xml ) getsharedpreference() - 애플리케이션내의콤포넌트들끼리의공유설정정보에접근 3) getdefaultsharedpreference() - PreferencesManager 를통해사용되며주어진 Context 의설정정보 <user defined name>.xml <Activity class name>.xml 3 Preferences 참조메서드 getxxx(key, default) putxxx(key, value) remove(key) : 해당 key 를제거 clear(): 설정지움 commit(): Editor 의설정저장. SharedPreference.Editor 클래스를통해기본형식의데이터저장지원

PreferenceActivity 소개 Preferences 를위한시스템환경설정화면을제공해서, xml 중심의환경설정프레임워크를제공. Preferences XML 정의 /res/xml 에설정화면레이아웃저장 <PreferenceScreen > <CheckBoxPreference /> <PreferenceCategory /> <PreferenceScreen/> PreferenceActivity 가화면을인플레이트 PreferenceActivity 앱설정저장 /data/data/<package-name>/shared_prefs/ <package_name>_preferences.xml 3 OnSharedPreferenceChangeListener() 설정저장 preference 형식으로동일하게저장

SharedPreference 실습소개 SharedPreference 에설정화면의변경값을저장하는예제 Activity 3 PreferenceActivity Menu 4 5 data 저장된결과 참조 : SG.PreferenceActivity.zip

SharedPreference 실습 코드분석 () 설정 UI xml 과액티비티선언 AndroidManifest.xml 두개의액티비티가선언됩니다. <activity android:name=".mypreferenceactivity" android:label="@string/app_name"> </activity> <activity android:name=".editpreferenceactivity" /> PreferenceAcvitiy 를구현 res/xml/settings.xml <PreferenceScreen android:key="preference_root" > <CheckBoxPreference.. android:key= checkbox /> <EditTextPreference /> <PreferenceCategory android:key= category > <ListPreference android:key= textcolor /> <ListPreference android:key= msgsize /> <RingtonePreference /> </PreferenceCategory> <PreferenceCategory.. > <PreferenceScreen android:key="sub_pref > <CheckBoxPreference /> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen> 설정화면선언설정체크박스요소설정분류추가요소설정 List 요소공유설정저장 key 참조 : SG.PreferenceActivity.zip

9. 저장기법 SharedPreference 실습 코드분석 () Activity 분석 MyPreferenceActivity class public class MyPreferenceActivity extends Activity {. protected void onresume() {. retrivepreferences(); protected void onactivityresult(int requestcode, int resultcode, Intent data) { retrivepreferences(); EditPreferenceActivity class public class EditPreferenceActivity extends PreferenceActivity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); addpreferencesfromresource(r.xml.settings); private void retrivepreferences() { SharedPreferences prefs = PreferenceManager. getdefaultsharedpreferences(getapplicationcontext()); 공유환경설정객체를만듭니다. String color = prefs.getstring("textcolor", "#FFFFFF"); String msg = prefs.getstring("newmsg", "<NONE>"); int size = Integer.parseInt( prefs.getstring("msgsize", "0") ); boolean check = prefs.getboolean("checkbox", false); checkbox.settext( new Boolean(check).toString()); added.settext( msg ); added.settextcolor(color.parsecolor(color)); added.settextsize(size); xml 로선언된설정화면 UI 를 content view 로설정 설정 key 의값을 String 으로가져옵니다. 참조 : SG.PreferenceActivity.zip

File 안드로이드는 Java 의 IO 를이용해 File 에접근. 파일은단말의내장메모리나 SDCARD 에저장. Networked IO 도가능. File IO 이용 FileInputStream Context.openFileInput(String path) 파일로부터의데이터를읽기. FileOutputStream Context.openFileOutput(path, [MODE]) 파일에쓰기 - 존재하지않는파일명을제시하면그파일을만들어준다. [MODE] 파일저장 / 읽기모드 Context.PRIVATE Context.MODE_APPEDN Context.MODE_WORLD_READABLE Context.MODE_WORLD_WRITABLE

File 코드분석 () 간단하게내장데이터에입력된문자를쓰는코드를살펴보자. 3 저장될파일 입력된내용을 DATAFILE 에쓴다

File 코드분석 () DATAFILE을읽어화면에표시하고, 종료시수정된내용을저장 파일을읽는다. 앱이종료하는시점에 EditText 의수정된내용을 DATAFILE 에씁니다. 화면의 EditText 에읽어온내용을표시한다.

File: resource file 및 assets 이용. res/raw 파일사용법 res/raw 디렉토리에추가한특정파일을읽어애플리케이션에서파일로작업. raw/mymusic.mp3 파일을읽는예제 InputStream is = openrawresource( R.raw.mymusic ); FileOutputStream fos = new FileOutPutStream( is);. res/xml 폴더보통 xml 로구성된데이터파일처리에사용. getresources().getxml(r.xml.people_list); 3. assets 폴더사용법이미지, 음원, 영상등안드로이드리소스와분리된 assets 폴더영역을사용. AssetManager myasset = getresources().getassets(); myasset.list(path) myasset.open(path)

Files on SDCARD 안드로이드단말은대부분외장메모리, SDCARD 를장착이가능. - SD 카드는내장메모리에비해고용량메모리. - WRITE_EXTERNAL_STORAGE 권한만획득하면파일을작성 / 관리가능 AndroidManifest.xml <uses-permission android:name="android.permission.write_external_storage" /> SDCard 에서파일처리예제 File imagefile = new File("/sdcard/DCIM/Camera/00-03-07 4.49.3.jpg"); if (imagefile.exists()) { imagefile.createnewfile() File testfile = new File( /sdcard/testfile.txt ); FileOutputStream fos = new FileOutputStream(testFile); OutputStreamWriter outtestfile = new OutputStreamWriter(fos); outtestfile.append( lskdjdsljslfjlfjlfs; ); outtestfile.close(); fos.close();

SQLite Database 소개 안드로이드는 SQLite3 데이터베이스를임베디드데이터베이스로제공 Contents Provider 어떤데이터소스와도연결가능한인터페이스제공 오픈소스로표준을잘준수한가볍고단일계층으로된데이터베이스이다. 3 4 지원되는 SQL create database, define SQL tables, indices queries views triggers insert / delete / change rows run queries SQLite3 DB Admin

SQLite 특징 SQL-9 표준지원 trigger 를부분적으로지원. 복잡한쿼리가능 ( outer join 제외 ) foreign key 를이용한참조무결성은지원하지않음 변형된데이터타입모델을사용 전체칼럼공통된타입을할당하지않고각각의데이터마다타입을다르게지정할수있음. 따라서숫자타입의칼럼에문자열을넣는것도가능. 저장위치 : /data/data/<package_name>/databases 테이블에자동증가키사용 ( 인덱스키로사용 )

9. 저장기법 SQLite 주요코딩요소 - 실제 SQLiteDatabase 를이용하기위해서는아래 3 가지클래스를이용. SQLiteOpenHelper class SQLiteDatabase 획득을위한 Helper class oncreate(sqlitedatabase), onupgrade(sqlitedatabase, int, int) 클래스는 DB 가있으면열고, 없으면새로만든다. 또한필요하면 DB 를업그레이드함. SQLite Database class 이클래스는 create, delete, execute SQL commands 메소드를가지고있음. DDL 용 insert(), delete, query, execsql() 등메서드제공. 이클래스를얻기위해서는위의헬퍼클래스를생성하여 getwritabledatabase() 메소드를통해얻고, 이클래스는위의 SQLiteOpenHelper 클래스의 oncreate, onupgrade 에서파라미터로사용됨. 3 Cursor interface 이인터페이스는 DB 쿼리로부터의결과셋에랜덤으로 read, write 하는기능을제공한다. 즉, DB 쿼리결과로이커서를받고, 이커서의메소드인 getstring() 등을이용해서 key 값 ( 컬럼명 ) 을넘겨주고, 매칭되는값 ( 해당데이터 ) 을추출한다. 또한 SimpleCursorAdapter 와같은 Adapter 클래스의생성자에넘겨주어, 레이아웃에 DB 쿼리의결과값을매칭시켜보여줄수있도록함.

SQLite 코드분석 - database 생성 private static String DATABASE_NAME = "testdb.db"; private static String DATABASE_TABLE = "test_table"; private static int DATABASE_VERSION = ; database 이름선언 Helper class 선언 private class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper( Context context) { super( context, DATABASE_NAME, null, DATABASE_VERSION); @Override public void oncreate(sqlitedatabase db) { db.execsql("create TABLE " + DATABASE_TABLE + "(" + "_id INTEGER PRIMARY KEY," + "lastname VARCHAR, " + 3 "firstname VARCHAR, " + "country VARCHAR, " + "age INT(3));"); version 은 database upgrade 마다증가 db 생성 4 String sql_insert = "INSERT INTO " + DATABASE_TABLE + "(lastname, firstname, country, age) " + "VALUES "; db.execsql( sql_insert + "(' 홍 ',' 길동 ',' 대한민국 ', 0);"); @Override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { db.execsql("drop TABLE IF EXISTS " + DATABASE_TABLE); oncreate(db); db upgrade 관리 insert row version 정보

SQLite 코드분석 - database query mopenhelper = new DatabaseHelper(this); SQLiteDatabase db = mopenhelper.getreadabledatabase(); database 얻기 6 Cursor cursor = db.query( DATABASE_TABLE, new String[] {"lastname","firstname","country","age", null, null, null, null, null); try { 3 int i = 0; if (cursor.movetofirst()) { do { 4 Cursor 에 data 가있으면첫번째 data 행으로이동 i++; String firstname = c.getstring(c.getcolumnindex("firstname");); String lastname = c.getstring(c.getcolumnindex("lastname");); String country = c.getstring(c.getcolumnindex("country");); int age = c.getint(= c.getcolumnindex("age");); item.add("" + i + ":" + firstname + lastname + "(" + country + ":" +age + ")"); 5 while (cursor.movetonext();); 다음행 data finally { if (c!= null) cursor.close(); ArrayAdapter<String> filelist = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_, item); setlistadapter(filelist); ListView 에 Adapter 추가 Cursor 객체얻기 Cursor 의컬럼에해당하는데이터를가져온다

SQLite 실습예제 입력필드 db 내용을보이는 ListView 참고 : SG.storage.DB.zip

SQLite 명령행에서 adb 로 SQLite 명령어사용 - SQL 문장으로데이터를조회, 갱신가능 형식 : sqlite3 data_file adb 로 shell 환경으로들어갑니다. Android Contacts db 살펴보기 #adb shell # ls /data/data/com.android.providers.contacts/databases # sqlite3 /data/data/com.android.providers.contacts/databases/contacts.db ls 명령으로 file 이있는지확인 SQLite 명령어 sql 문장을제외한, 모든명령은 '.' 으로시작합니다. sqlite3 로 database file 을읽어들입니다..table : 데이터베이스내의모든테이블을나열합니다..header on : 쿼리결과를표시할때맨위에열이름을같이표시합니다..mode column : 쿼리결과를표시할때각열들사이를적당히띄워주어보기편하도록표시합니다..exit : sqlite3 툴을종료합니다.

9. 안드로이드저장장치 SQLite 3 SQLite database 조회실습 C:\Users\james>adb shell # ls /data/data/com.sgap.exam.database/databases testdb.db # sqlite3 /data/data/com.sgap.exam.database/databases/testdb.db SQLite version 3.5.9 Enter ".help" for instructions sqlite>.tables sqlite> select * from test_table; select * from test_table; 홍 길동 대한민국 0 james goh korea 40. adb 로 shell 환경으로들어갑니다.. database file 을읽어들이고 sqlite 쉘로변경합니다. 3. test_table 에저장된 row 를 select 합니다. 4 참고 : 윈도우 cmd 에서 UTF-8 한글표시하는방법 http://underclub.tistory.com/60