Search
'2009/01'에 해당되는 글 11건
- 2009/01/26 설날 국립중앙박물관 (3)
- 2009/01/26 눈 오는 설 전날의 소경
- 2009/01/21 2009년 겨울 눈 내린 경복궁
- 2009/01/21 [iPhone] SQLite3를 JDBC처럼 사용할 수 있는 FMDB (3)
- 2009/01/18 50D + 35L + 135L (1)
- 2009/01/14 Cubrid Manager 오픈소스 프로젝트에 참여하다
- 2009/01/14 My Task (나의 할일) 1.0.4 업데이트 (8)
- 2009/01/12 열심히 일하는 것과 목표를 갖고 열심히 일하는 것의 차이
- 2009/01/12 [iPhone] SQLite3를 JDBC처럼 사용할 수 있는 FMDB 소개
- 2009/01/05 용산가족공원: MH님 (3)
눈 내린 뒤의 경복궁은 고즈넉하고 평화로우면서도 편안함을 느끼게 합니다.
외국인이 많이 찾아오는 데 우리가 이런 문화유산을 잘 보존하고 있다는 게 뿌듯하고 자랑스러웠습니다.
그러면서도 숭례문 때문에 마음이 아픈 것은 어쩔 수 없군요.
외국인이 많이 찾아오는 데 우리가 이런 문화유산을 잘 보존하고 있다는 게 뿌듯하고 자랑스러웠습니다.
그러면서도 숭례문 때문에 마음이 아픈 것은 어쩔 수 없군요.
Database 접속
데이터 베이스 접속이 되었다면 이제는 CRUD를 기준으로 예제와 함께 진행해보겠습니다.
Create
또한, [db lastInsertRowId] 로 auto increment 값을 얻을 수 있습니다.
Read
executeQuery의 결과로 FMResultSet을 가져오고 FMResultSet의 next 메소드를 계속 호출하면서 row를 한개씩 fetch하고 있습니다. 물론, 마지막에는 close 했습니다(중요하죠. 지원을 반납한다는 것은 말이죠).
SQLite의 API는 컬럼 순번으로만 데이터를 가져올 수 있었습니다. 그러나, FMDB는 @"empno"와 같이 컬럼명을 직접 지정해줄 수 있게 되어 있습니다. 그 편리성은 아마도 아실듯... JDBC 프로그래밍을 해보셨다면 문법이 많이 익숙하실 것입니다.
Update
Delete
Apple 개발자 사이트에서 샘플로 제공하는 SQLiteBook을 보시고 이 코드를 보시면 와~ 하실 겁니다(적어도 저는 와~했었습니다^^). Copy & Paste와 많은 수정을 거쳐야 하나의 SQL을 처리하는 루틴이 만들어졌었는데, 이제는 1분 이내에 데이터 패치를 하는 코드 작성이 가능해졌습니다.
소스코드가 공개되어 있으니 소스코드도 한 번 보시길 바랍니다. 약간의 오버헤드가 있을 듯 하나 무시하셔도 될 정도가 아닐까 생각합니다. 제가 소개한 내용은 기본적인 사용 방법일 뿐이고, 트랜잭션 처리나 에러처리 기능이 있으니 관심깊게 살펴보시면 좋을 듯 합니다.
FMDatabase* db = [FMDatabase databaseWithPath:@"/company.db"];
if (![db open]) {
NSLog(@"데이터베이스에 접속할 수 없습니다.");
return false;
}
물론 company.db 파일이 있어야 합니다. 또한, 위의 코드만으로는 Application영역에 있는 db파일이 Document영역으로 자동 복사 되는 것도 아닙니다. 자세한 사항은 SQLiteBook 예제를 참고하세요. 추후 관련 자료는 정리해 보겠습니다.if (![db open]) {
NSLog(@"데이터베이스에 접속할 수 없습니다.");
return false;
}
데이터 베이스 접속이 되었다면 이제는 CRUD를 기준으로 예제와 함께 진행해보겠습니다.
Create
NSString *sql = @"INSERT INTO emp (empno, name, grade, salary, hiredate) VALUES (?, ?, ?, ?, ?)";
[db executeUpdate: sql,
[NSNumber numberWithInt: 10240],
@"홍길동",
[NSNumber numberWithInt: 10],
[NSNumber numberWithFloat:3250.03f],
[NSDate date]
];
보시는 것과 같이 ?와 1:1 대응되도록 파라미터를 추가하게 됩니다. 단, 모든 파라미터는 객체형이어야 합니다.[db executeUpdate: sql,
[NSNumber numberWithInt: 10240],
@"홍길동",
[NSNumber numberWithInt: 10],
[NSNumber numberWithFloat:3250.03f],
[NSDate date]
];
또한, [db lastInsertRowId] 로 auto increment 값을 얻을 수 있습니다.
Read
NSString *sql = @"SELECT * FROM emp WHERE empno > ?";
FMResultSet *rs = [db executeQuery: sql, [NSNumber numberWithInt: 0]];
while ([rs next]) {
NSLog(@"사번:%d, 사원명:%@, 직급코드:%d, 연봉:%f, 입사일:%@",
[rs intForColumn:@"empno"],
[rs stringForColumn:@"name"],
[rs intForColumn:@"grade"],
[rs doubleForColumn:@"salary"],
[rs dateForColumn:@"hiredate"]
);
전체 사원 목록을 가져오는 예제 입니다. empno > 0이라고 한 이유는 파라미터로 어떻게 넘기는 지 보여드리기 위한 것일 뿐 특별한 의미는 없습니다.FMResultSet *rs = [db executeQuery: sql, [NSNumber numberWithInt: 0]];
while ([rs next]) {
NSLog(@"사번:%d, 사원명:%@, 직급코드:%d, 연봉:%f, 입사일:%@",
[rs intForColumn:@"empno"],
[rs stringForColumn:@"name"],
[rs intForColumn:@"grade"],
[rs doubleForColumn:@"salary"],
[rs dateForColumn:@"hiredate"]
);
}
[rs close];
[rs close];
executeQuery의 결과로 FMResultSet을 가져오고 FMResultSet의 next 메소드를 계속 호출하면서 row를 한개씩 fetch하고 있습니다. 물론, 마지막에는 close 했습니다(중요하죠. 지원을 반납한다는 것은 말이죠).
SQLite의 API는 컬럼 순번으로만 데이터를 가져올 수 있었습니다. 그러나, FMDB는 @"empno"와 같이 컬럼명을 직접 지정해줄 수 있게 되어 있습니다. 그 편리성은 아마도 아실듯... JDBC 프로그래밍을 해보셨다면 문법이 많이 익숙하실 것입니다.
Update
NSString *sql = @"UPDATE emp SET grade=? WHERE empno=?";
[db executeUpdate: sql,
[NSNumber numberWithInt: 20],
[NSNumber numberWithInt: 10240]
];
INSERT를 보셨으니 새로울 것이 없죠? 비슷합니다.[db executeUpdate: sql,
[NSNumber numberWithInt: 20],
[NSNumber numberWithInt: 10240]
];
Delete
NSString *sql = @"DELETE FROM emp WHERE empno=?";
[db executeUpdate: sql,
[NSNumber numberWithInt: 10240]
];
구색을 맞추기 위해 DELETE도 넣어봤습니다.[db executeUpdate: sql,
[NSNumber numberWithInt: 10240]
];
Apple 개발자 사이트에서 샘플로 제공하는 SQLiteBook을 보시고 이 코드를 보시면 와~ 하실 겁니다(적어도 저는 와~했었습니다^^). Copy & Paste와 많은 수정을 거쳐야 하나의 SQL을 처리하는 루틴이 만들어졌었는데, 이제는 1분 이내에 데이터 패치를 하는 코드 작성이 가능해졌습니다.
소스코드가 공개되어 있으니 소스코드도 한 번 보시길 바랍니다. 약간의 오버헤드가 있을 듯 하나 무시하셔도 될 정도가 아닐까 생각합니다. 제가 소개한 내용은 기본적인 사용 방법일 뿐이고, 트랜잭션 처리나 에러처리 기능이 있으니 관심깊게 살펴보시면 좋을 듯 합니다.
암호 코드가 아닙니다. 현재 제가 사용하고 있는 카메라와 렌즈 입니다.
올해 말이나 내년초에 24-70 또는 70-200을 추가하기 전까지는 계속 이 구성으로 갈 듯 합니다.
올해 말이나 내년초에 24-70 또는 70-200을 추가하기 전까지는 계속 이 구성으로 갈 듯 합니다.
참여한지는 꽤 되었지만, 이제서야 포스팅하게 됩니다.
큐브리드 매니저에 관심을 갖게 된 것은 뉴스솔루션을 MySQL에서 큐브리드로 포팅하면서였고, 큐브리드 매니저 프로젝트에 참여를 하게 되면 국산 오픈소스 DBMS의 활성화의 디딤돌 역할을 할 수 있지 않을까 해서 참여하게 되었습니다.
한국 오픈소스 개발 환경의 무궁한 발전을 바라며... 열심히 하겠습니다.
현재는 웹매니저 관련으로 개인 프로젝트를 진행중입니다.
제가 Mac OSX를 사용해서 윈도우즈와 리눅스에서만 실행되는 매니저가 불편해서 웹매니저의 필요성을 느껴서 관심을 두고 있습니다.
큐브리드 매니저에 관심을 갖게 된 것은 뉴스솔루션을 MySQL에서 큐브리드로 포팅하면서였고, 큐브리드 매니저 프로젝트에 참여를 하게 되면 국산 오픈소스 DBMS의 활성화의 디딤돌 역할을 할 수 있지 않을까 해서 참여하게 되었습니다.
한국 오픈소스 개발 환경의 무궁한 발전을 바라며... 열심히 하겠습니다.
현재는 웹매니저 관련으로 개인 프로젝트를 진행중입니다.
제가 Mac OSX를 사용해서 윈도우즈와 리눅스에서만 실행되는 매니저가 불편해서 웹매니저의 필요성을 느껴서 관심을 두고 있습니다.
간만에 iPhone용 My Task 버전을 업데이트 했습니다.
버그 수정과 언어 추가 정도의 마이너 업데이트 입니다.
- 날짜, 시간 선택기에서 15초 단위로 출력되지 않던 출력 버그 수정
- 일본어 언어 추가
일본어 언어 추가는 요즘 DSLR 세계에 갑자기 풍덩 뛰어든 앤디K님이 수고해주셨습니다.
아, 깜빡할 뻔 했습니다.
My Task 리뷰를 써주신 블로거가 있어서 소개합니다.
andiPod.com에서 확인하실 수 있습니다.
이참에 아직 완성도 낮은 어플을 리뷰해 주셔서 고맙습니다~라고 인사말 적습니다.
~ 어깨가 무거워지는 ~
버그 수정과 언어 추가 정도의 마이너 업데이트 입니다.
- 날짜, 시간 선택기에서 15초 단위로 출력되지 않던 출력 버그 수정
- 일본어 언어 추가
일본어 언어 추가는 요즘 DSLR 세계에 갑자기 풍덩 뛰어든 앤디K님이 수고해주셨습니다.
아, 깜빡할 뻔 했습니다.
My Task 리뷰를 써주신 블로거가 있어서 소개합니다.
andiPod.com에서 확인하실 수 있습니다.
이참에 아직 완성도 낮은 어플을 리뷰해 주셔서 고맙습니다~라고 인사말 적습니다.
~ 어깨가 무거워지는 ~
요즘들어 생각하는 주제는 "목표" 입니다.
마냥 맡은 바 열심히 하는 것이 중요한 것인가?
그렇게만 하면 탄탄 대로가 내 앞에 펼쳐질 것인가?
위와 같은 세상이 현실이라면 얼마나 편하고 좋을까 생각해 봅니다.
우직한 소와 같이 열심히 일하면 주인이 밥도 주고 재워도 주니 말이죠.
최근들어, 목표를 갖고 최선을 다해야 내가 원하는 위치에 다다를 수 있다는 생각이 듭니다.
개발자 면접을 볼 때, 제가 항상 하는 질문이 있습니다.
5년후, 10년후 뭐를 하고 있을 것 같습니까?
5년후는 아니더라도 1년후에 뭐가 되어 있을 지라도 생각하고 목표를 정하고 반성하는 삶을 살아야겠습니다.
마냥 맡은 바 열심히 하는 것이 중요한 것인가?
그렇게만 하면 탄탄 대로가 내 앞에 펼쳐질 것인가?
위와 같은 세상이 현실이라면 얼마나 편하고 좋을까 생각해 봅니다.
우직한 소와 같이 열심히 일하면 주인이 밥도 주고 재워도 주니 말이죠.
최근들어, 목표를 갖고 최선을 다해야 내가 원하는 위치에 다다를 수 있다는 생각이 듭니다.
개발자 면접을 볼 때, 제가 항상 하는 질문이 있습니다.
5년후, 10년후 뭐를 하고 있을 것 같습니까?
5년후는 아니더라도 1년후에 뭐가 되어 있을 지라도 생각하고 목표를 정하고 반성하는 삶을 살아야겠습니다.
iPhone에는 SQLite3 데이터베이스 엔진이 내장되어 있습니다. 빠르고 단순한 데이터베이스라 모바일장치인 iPhone에 가장 적합한 데이터베이스가 아닌가 생각합니다. 물론, Google의 Android도 SQLite3를 내장하고 있는 것으로 알고 있습니다.
그러나, iPhone은 SQLite3 접속을 위한 API가 SQLite3에서 제공하는 기본 인터페이스만 공개했기 때문에 DB관련 프로그래밍이 무척 불편했던 것이 사실 입니다. 그동안 Java의 JDBC에 익숙해져 있었던 저로서는 더더욱 그러했었습니다.
그러다가 FMDB라는 래퍼 라이브러리를 찾게 되었고 실제 적용해보니 개발 속도 향상이 되어 이렇게 소개하게 되었습니다.
먼저 소스는 구글코드의 SVN 소스트리에서 다음과 같이 구하실 수 있습니다.
svn co http://flycode.googlecode.com/svn/trunk/fmdb fmdb
받으신 후 프로젝트에 Add 시키고,
#import "FMDatabase.h"
#import "FMResultSet.h"
위와 같이 헤더만 추가해주시면 사용이 가능합니다.
상세 강좌는 다음에~ 소스 받으시면 샘플 소스가 있으니 그걸 보셔도 됩니다.
오랜만에 머리 식힐겸 모델 출사를 다녀왔습니다.
날씨가 포근하다고는 해도 겨울인지라... (무보정 리사이즈 사픈1방)
날씨가 포근하다고는 해도 겨울인지라... (무보정 리사이즈 사픈1방)
