2016-07-27 4 views
0

문제 :아래 코드로 레코드를 업데이트 할 수 없습니다.

프로젝트에서 삽입 된 레코드를 아래 코드로 업데이트 할 수 없습니다. 업데이트 버튼을 누른 다음 클릭 될 경우 기록은 upated해야하며

코드의 ViewController

에 표시되어야합니다

import UIKit 

class UpdateScreen: UIViewController 
{ 

    var strEmail:String! 
    var dictRecord:NSDictionary! 
    var databasepath:String! 

    @IBOutlet weak var txtfld_Update_Name: UITextField! 

    @IBOutlet weak var txtfld_Update_Phone: UITextField! 

    @IBOutlet weak var txtfld_Update_Email: UITextField! 

    @IBOutlet weak var txtfld_Update_Comment: UITextField! 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 

     print(dictRecord!) 

     txtfld_Update_Name.text! = (dictRecord["Name"]! as? String)! 
     txtfld_Update_Phone.text! = (dictRecord["Phone"]! as? String)! 
     txtfld_Update_Email.text! = (dictRecord["Email"]! as? String)! 
     txtfld_Update_Comment.text! = (dictRecord["Comment"]! as? String)! 

    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 



    @IBAction func btnUpdateClicked(sender: AnyObject) 
    { 
     let filemgr = NSFileManager.defaultManager() 
     let dirpaths = NSSearchPathForDirectoriesInDomains(.DocumentationDirectory, .UserDomainMask, true) 
     let docDir = dirpaths[0] as String 
     databasepath = docDir.stringByAppendingString("StudentDataManipulation.sqlite"); 

     if filemgr.fileExistsAtPath(databasepath as String) 
     { 
      let contactDB = FMDatabase(path: databasepath as String) 

      if contactDB.open() 
      { 
       let sql_stmt = "CREATE TABLE IF NOT EXISTS StudentData (Name TEXT, Phone TEXT, Email TEXT PRIMARY KEY NOT NULL, Comment TEXT)" 

       if !contactDB.executeStatements(sql_stmt) 
       { 
        print("Error: \(contactDB.lastErrorMessage())") 
       } 


       let updateSql:String = "UPDATE StudentData SET Name='\(txtfld_Update_Name.text!)', Phone='\(txtfld_Update_Phone.text!)', Comment='\(txtfld_Update_Comment.text!)'" 

       print("updateSql before = \(updateSql)"); 

       let result = contactDB.executeUpdate(updateSql, withArgumentsInArray: nil) 

       print("updateSql after = \(updateSql)"); 

       if !result 
       { 
        print("Error: \(contactDB.lastErrorMessage())") 
       } 
       else 
       { 
        print("Record Successfully Updated") 
        self.navigationController?.popViewControllerAnimated(true) 
       } 
      } 
      else 
      { 
       print("Error: \(contactDB.lastErrorMessage())") 
      } 
      contactDB.close() 
     } 
    } 
} 

답변

0

당신의 SQL이 잘못되었습니다. update tablename set field1 = value1 and field2 = value2 여기서 id = xx

+0

이것은 이전보다 좋게 작동합니다. 레코드는 콘솔에서 업데이트 된 것으로 볼 수 있지만 테이블에서는 업데이트되지 않습니다. –

+0

Datum과 같은 sqlite 관리자를 사용하고 있습니까? 그렇다면 때때로 테이블을 자동으로 다시로드하지 않습니다. 재로드 버튼을 명시 적으로 클릭해야합니다. 시도해 봐. –

관련 문제