티스토리 뷰
저번 글에 이어 이번 글에서는 FMDB를 이용한 SQLite에 Insert와 Select를 하는법을 알아보겠다.
일반적인 데이터 Insert는 테이블을 생성하는 방법에 SQL만 다르게 주면 된다.
하지만 동적인 값들을 입력하기 위해 이번에는 SQL에 파라미터를 주는 방법(자바로는 PrepareStatement)을 보겠다.
let dbPath = "mydatabase.db"
let fmdb = FMDatabase(path: dbPath)
if db.open() {
let sql = "INSERT INTO MYTABLE(COL1, COL2) VALUES(:col1, :col2)"
let paramDictionary = [NSObject:AnyObject]
paramDictionary["col1"] = 33
paramDictionary["col2"] = "myValue"
let result = fmdb.executeUpdate(sql, withParameterDictionary: paramDictionary)
if result {
print("성공")
}
}
fmdb.close()
코드를 해석해보자면 :(콜론)은 파라미터라는 표시이다. 그리고 콜론의 오른쪽에는 변수명이 온다. 이렇게 SQL에 표시를 해준 후, [NSObject:AnyObject] 타입의 Dictionary를 생성하여 SQL에 명시해준 변수명을 키로 SQL에 삽입할 값을 삽입해준다.
예를 들어 첫 번째 파라미터로는 :col1을 입력하였으므로 dictionary["col1"]=값 형식으로 입력해준다.
그 후 executeUpdate 함수에 withParameterDictionary 인자로 값을 입력한 dictionary를 함께 넘겨주면 SQL에 동적인 값을 입력 할 수 있게된다.
다음으로는 select를 하여 값을 받아오는 방법을 알아보겠다.
let dbPath = "mydatabase.db"
let fmdb = FMDatabase(path: dbPath)
if db.open() {
let sql = "SELECT * FROM MYTABLE WHERE col1=:col1"
let paramDictionary = [NSObject:AnyObject]
paramDictionary["col1"] = 33
let result = fmdb.executeQuery(sql, withParameterDictionary: paramDictionary)
while result.next() == true {
let resCol1 = result.intForColumn("col1")
let resCol2 = result.stringForColumn("col2")
print("\(resCol1) : \(resCol2)")
}
}
fmdb.close()
다른부분은 모두 같지만 쿼리를 날리는 함수가 executeQuery로 바뀌었다.
이 함수는 자바로 치자면 ResultSet 같은 객체를 리턴한다.
반복문을 돌면서 다음 행을 가져와 [자료형]ForColumn("컬럼명") 함수로 값을 가져올 수 있다. 정수를 가져오려면 intForColumn, 실수를 가져오려면 doubleForColumn처럼 가져오면 된다.
'IOS' 카테고리의 다른 글
[Swift] LocalNotification(로컬알림) 일정 주기로 반복하기 (0) | 2015.11.13 |
---|---|
[Swift] LocalNotification(로컬알림) 예약하기 (0) | 2015.11.13 |
FMDB를 이용한 Swift에서 SQLite 사용하기 (0) | 2015.11.13 |
IOS에서 이전 뷰로 돌아가기(뒤로가기) (0) | 2015.11.13 |
[Swift] 웹에서 데이터 받아오기 (1) | 2015.11.13 |
- Total
- Today
- Yesterday
- 시간
- 메모리
- 클로저
- json
- 리액트
- 날짜
- 성능
- javascript
- 자료구조
- Clojure
- Java
- 컴퓨터 시간
- 자바
- 람다
- rambda
- 성능개선
- RAMDA
- react
- gitlab
- 퍼포먼스
- 자바 성능
- Docker
- opensource
- Stream
- 코어
- Swift 2.0
- 프로세서
- 알람
- Java8
- Jackson
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |