iphone 개발자의 SQLite 다루기 개발 Xcode Version : 4.5 작성 서경덕 환경 시뮬레이터 : iphone Simulator 6.0 일시 2013 년 1 월 3 일 시나리오 1. FireFox의플러그인을통해 SQLite파일을맊든다. 2. 어플에서이

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

iOS4_13

05-06( )_¾ÆÀÌÆù_ÃÖÁ¾

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

2ndWeek_Introduction to iPhone OS.key

Chapter 1

ISP and CodeVisionAVR C Compiler.hwp

DBMS & SQL Server Installation Database Laboratory

Install stm32cubemx and st-link utility

10.ppt

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

강의 개요

슬라이드 1

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

MAX+plus II Getting Started - 무작정따라하기

OnTuneV3_Manager_Install

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

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

제목을 입력하세요.

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

슬라이드 1

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

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

Spring Boot/JDBC JdbcTemplate/CRUD 예제

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

DE1-SoC Board

(SW3704) Gingerbread Source Build & Working Guide

슬라이드 1

윈도우시스템프로그래밍

Microsoft Word - src.doc

문서 템플릿

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

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Microsoft Word - Modelsim_QuartusII타이밍시뮬레이션.doc

Tad_가이드라인

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

13주-14주proc.PDF

PowerPoint Template

슬라이드 1

슬라이드 1

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

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

Convenience Timetable Design

작동 원리

DocsPin_Korean.pages

MS-SQL SERVER 대비 기능

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

PRO1_09E [읽기 전용]

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

캐빈의iOS프로그램팁01

슬라이드 1

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

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

윈도우시스템프로그래밍

Windows 8에서 BioStar 1 설치하기

01장

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

chap 5: Trees

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Slide 1

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

USER GUIDE

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

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

ALTIBASE HDB Patch Notes

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Title Here

tiawPlot ac 사용방법

JDBC 소개및설치 Database Laboratory

Microsoft Word - PLC제어응용-2차시.doc

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

Microsoft PowerPoint - 4-UI 애플리케이션

<30342DBCF6C3B3B8AEBDC3BCB33228C3D6C1BE292E687770>

untitled

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

Microsoft PowerPoint Python-DB

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

Microsoft PowerPoint - Java7.pptx

Facebook API

Microsoft PowerPoint - chap01-C언어개요.pptx

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

Office 365 사용자 가이드

MySQL-.. 1

Database Design Lab: MS Access Queries 1. Download lab6.accdb and rename it to lab7.accdb. 2. 이름 값을가지는쿼리 qryauthor 를만든다 a) Open lab6.accdb. b) 리본메뉴 만들

System Recovery 사용자 매뉴얼

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

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

(Xcode4.2 의 Choose a template for your new project 화면 ) 2) 라이브러리패널이조금바뀌었습니다. Stepper, Gesture Recognizer 가추가되었습니다. 외형이조금바뀌었지만, 책의내용은그대로사용할수있으므로문제없습니다.

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

SBR-100S User Manual

WebPACK 및 ModelSim 사용법.hwp

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft PowerPoint - chap06-1Array.ppt

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

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Transcription:

iphone 개발자의 SQLite 다루기 개발 Xcode Version : 4.5 작성 서경덕 환경 시뮬레이터 : iphone Simulator 6.0 일시 2013 년 1 월 3 일 시나리오 1. FireFox의플러그인을통해 SQLite파일을맊든다. 2. 어플에서이 SQLite( 외부 ) 파일을읽어서출력한다. (viewdidload) 3. 버튼을누를때마다 DB(SQLite) 에값을넣고젂체내용을출력한다. Step1. Firefox 로 SQLite 파일만들기!! 먼저 Firefox 를실행합니다. (Firefox가설치안되신분들은 AppStore에서 Firefox라고검색및설치하시고 Firefox사이트에서 SQLite Manager를설치하셔야합니다.) Firefox 의도구에서 SQLite Manager 를실행합니다.

SQLite Manager 가제대로실행되면아래와같고최초실행시 Database 를생성해준다. Database 이름은 testdb 로하고확인을누른다. 확인을누르면저장할위치를물어보는데각자원하는위치에저장해도되며여기서는 도큐먼트에저장하도록한다.

이제도큐먼트폴더에는 testdb.sqlite 라는파일이생성되었다. Database 에 Table 을맊들어보자 아래의그림처럼테이블이름은 table_test 으로하고컬럼 ( 필드 ) 은하나맊생성을하는 데 field_test 라는이름과 VARCHAR 의 Data Type 을부여한다. 생성을하면 SQL 문으로바꾸어사용자에게확인시킨다. Yes 를눌러테이블을생성한다. 왼쪽리스트에테이블이생성되었음을확인한다. 이제테이블에값을넣어보겠다. Excute SQL 를누르고아래의그림처럼 Enter SQL에 insert into table_test(field_test) values( test_value ); 라고입력한뒤 Run SQL 을누른다. Last Error 부분에 not an error 메시지를확인하면정상적으로값이입력되었음을알수있다.

SQLite 파일이준비완료되었다. 이제 xcode 를열어서 SQLite 를불러들여내용을보여 주고값을입력해보는어플을맊들어보자. Step2. SQLite 파일을읽어서출력하는어플을만들자! xcode 를실행하여새로운 Project 를맊든다. ios 의 Application 에서 Single View Application 을선택하고 NEXT 를누른다.

Product Name 에는 sqlitetest 라고입력하고 NEXT 를누른다. 프로젝트생성위치를적젃하게선택하고 Create 를누른다.

xcode 가버젂업되면서약갂달라진부분이있어서짚고넘어가겠다. ViewController.xib( 닙 ) 파일을선택하고오른쪽에 Interface Builder Document 에 Use Autolayout 에체크를해제하고 Command+S 를눌러저장한다. 요거체크안해주면버튼에 IBAction 을추가하면에러가발생한다. xcode 버젂업되면서바뀐내용이다. 버튼을쉽게추가하기위해 Assistant editor 를눌러화면을두개로분리합니다. 왼쪽화면에는.xib, 오른쪽화면에는.h 가나오도록한다.

ViewController.xib 에버튼을하나추가해보자. 오른쪽에서 Round Rect Button 을드래그해서 xib( 닙 ) 파일위에올려놓는다. Ctrl 을누르고버튼을드래그하면아래의그림처럼파란라인이나온다.

ViewController.h 에드래그가완료되면아래의그림과같은창이뜬다. 입력창에서 Connection 을 Action 으로바꾸고, Name 에 buttonclicked 라고입력하고 Connect 를 누른다. 왼쪽리스트에서 ViewController.h 를선택하면왼쪽에 ViewController.h 와오른쪽에 ViewController.m 으로바뀐다.

xcode 에 SQLite 파일을추가하겠습니다. testdb.sqlite 파일을드래그해서 xcode 의왼쪽리스트에넣는다. 파일을추가하면아래와같은창이나온다.

Copy items into destination group s folder (if needed) 에체크하고 Add to tartgets 에 sqlitetest 에체크하고 Finish 를누른다. 왼쪽리스트에서최상위프로젝트를누르면아래와같은창이나오는데여기서 Build Phases 를누르고 Link Binary With Libraries 에서 + 를눌러라이브러리를추가하자 + 를누르면아래와같은창이나오는데검색어에 sqlite 라고입력하고검색된결과 중에 libsqlite3.dylib 를선택하고 Add 를눌러라이브러리를추가한다.

왼쪽리스트에 libsqlite3.dylib 가추가된것을확인할수있다. 다음으로추가한라이브러리를어플소스에추가해보겠다. 왼쪽리스트에서 ViewController.h를선택하고아래의그림처럼 #import <sqlite3.h> 를추가한다. 그리고 ViewController.h 에아래와같이소스를추가한다.

sqlite3 *db" 는 sqlite3_stmt *statement 는 NSMutableArray *arraystr 은 DB 의내용이배열형태로저장되는곳이다. -(void)checkandcopydb; 는 sqlite파일이수정가능한폴더에복사되어있는지확인및복사하는메소드다. -(void)opendb; 는어플에서 DB에접근하기위해커넥션을맊드는메소드이다. -(NSString *)filepath; 는 sqlite파일이수정가능한폴더의위치값을반홖하는메소드이다. -(void)getdb; 는 sqlite파일에들어있는값을가져오는메소드이다. 이제 ViewController.m 으로넘어가서실제동작하는소스를작성해보자. 아래의그림처럼메소드폼을작성하자.

그런다음아래와같이메소드의동작내용을작성한다. 각각의소스에대한설명은다음과같다. -(void)checkandcopydb { NSFileManager *filem = [NSFileManager defaultmanager]; // 파일의유무를검사하기위해디폴트파일메니저를생성한다. if([filem fileexistsatpath:[self filepath]]) return; //[self filepath] 를실행하면 sqlite파일이수정가능한폴더의경로가나오는데그경로에 sqlite파일이존재하면참, 아니면거짓을반홖한다. NSString *pathsrc = [[NSBundle mainbundle] pathforresource:@ testdb oftype:@ sqlte ]; // 어플이실행되면파일이생성되는경로이다. } [filem copyitematpath:pathsrc topath:[self filepath] error:nil]; // 파일메니저를이용하여 pathsrc [self filepath] 로파일을복사한다. [filem release]; // 파일메니저멤버를메모리에서해제한다.

-(void)opendb { //sqlite를사용하기위해커넥션을생성하는부분이다. if(sqlite3_open([[self filepath] UTF8String], &db)!= SQLITE_OK) { } } -(NSString *)filepath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentdir = [paths objectatindex:0]; return [documentdir stringbyappendingpathcomponent:@ testdb.sqlite ]; // 반홖되는결과는어플아이디 /Document/testDB.sqlite 이다. // 어플아이디 /Document에있는파일은수정이가능하다. } -(void)getdb { NSString *query = @ select * from table_test ; [self opendb]; //sqlite를사용하기위해 opendb메소드를사용한다. arraystr = [NSMutableArray arraywithcapacity:0]; // DB내용을저장하기위해 NSMutableArray를선언하고사이즈 0을준다.

if(sqlite3_prepare_v2(db, [query UTF8String], -1, &statement, NULL) == SQLITE_OK) // sqlite 사용준비가되면 SQLITE_OK값이된다. { while(sqlite3_step(statement) == SQLITE_ROW) { // 한줄한줄씩 DB를읽어낸다. NSString *str = [[NSString alloc] initwithutf8string:(char *)sqlite3_column_text(statement, 0)]; // 0 컬럼 ( 첫번째 ) 의값을 text형태로받아저장한다. [arraystr addobject:str]; //NSMutableArray에 DB값을저장한다. [str release]; } } for(int a = 0 ; a < [arraystr count] ; a++) // 배열젂체를출력하는부분이다. } else{ // sqlite 사용준비가안되면에러메시지를출력한다. } 그런다음 viewdidload 에아래와같이두가지를추가하여 sqlite 파일의위치를확인하 고 DB 내용을가져온다. 여기까지맊작성하고실행을해도 sqlite 파일에있는값을가져온다. Command + B, R 을눌러서실행해보아도좋다.

Step3. 버튼을누를때 DB 에값을넣고전체내용출력하기! 아래의그림처럼두부분에코드를추가한다. 그리고 Command + B, R 을눌러어플을실행해보자 아니면좌측상단의 Run 을눌러도실행된다.

어플이실행되면다음과같은내용이출력된다. 마지막라인을제외하고는어플이생성될때마다다른값을보여준다. 여기서설명을하자면첫번째라인 filepath : ---- 는 [self filepath] 를실행한결과이다. 여기에 sqlite파일이있을경우수정가능하다. 두번째라인 pathsrc : ---- 는어플이실행될때 sqlite파일이위치하는경로이다. 여기서는읽기맊가능하며접근시 mainbundle로접근하여야한다. 세번째라인은 testdb.sqlite파일에들어있는값이다. 이상으로 sqlite 다루기를마치겠다.