SQLite 와 FMDB를 활용한 주소록 앱
iOS
2016. 11. 17. 12:57
Core Data를 활용
//
// ViewController.swift
// DBContacts
//
// Created by 컴퓨터소프트웨어학과 on 2016. 11. 17..
// Copyright © 2016년 sd. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
var databasePath = NSString()
@IBOutlet weak var status: UILabel!
@IBOutlet weak var name: UITextField!
@IBOutlet weak var address: UITextField!
@IBOutlet weak var phone: UITextField!
@IBOutlet weak var email: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
status.text = "검색할 이름을 입력하고 검색을 누르세요."
let filemgr = NSFileManager.defaultManager()
let dirPaths = filemgr.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
databasePath = dirPaths[0].URLByAppendingPathComponent("DBcontacts.db").path!
if !filemgr.fileExistsAtPath(databasePath as String) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB == nil {
print("Error: \(contactDB.lastErrorMessage())")
}
if contactDB.open() {
let sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT, EMAIL TEXT)"
if !contactDB.executeStatements(sql_stmt) {
print("Error: \(contactDB.lastErrorMessage())")
}
contactDB.close()
} else {
print("Error: \(contactDB.lastErrorMessage())")
}
}
}
@IBAction func saveData(sender: AnyObject) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB.open() {
let insertSQL = "INSERT INTO CONTACTS (name, address, phone, email) VALUES ('\(name.text!)', '\(address.text!)', '\(phone.text!)', '\(email.text!)')"
let result = contactDB.executeUpdate(insertSQL,
withArgumentsInArray: nil)
if !result {
status.text = "저장에 실패했습니다."
print("Error: \(contactDB.lastErrorMessage())")
} else {
status.text = "저장되었습니다."
name.text = ""
address.text = ""
phone.text = ""
email.text = ""
}
} else {
print("Error: \(contactDB.lastErrorMessage())")
}
}
@IBAction func searchData(sender: AnyObject) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB.open() {
let querySQL = "SELECT address, phone, email FROM CONTACTS WHERE name = '\(name.text!)'"
let results:FMResultSet? = contactDB.executeQuery(querySQL,
withArgumentsInArray: nil)
if results?.next() == true {
address.text = results?.stringForColumn("address")
phone.text = results?.stringForColumn("phone")
email.text = results?.stringForColumn("email")
status.text = "검색 결과입니다."
} else {
status.text = "찾지 못하였습니다."
address.text = ""
phone.text = ""
email.text = ""
}
contactDB.close()
} else {
print("Error: \(contactDB.lastErrorMessage())")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}