DBContacts.zip











    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.
        }
    
    
    }
    
    


    Posted by 플랑