2016-07-27 18 views
0

問題:以下のコードでレコードを更新することはできません

私のプロジェクトでは、以下のコードで挿入されたレコードを更新できません。更新ボタンがクリックされた場合、レコードはupatedべきであるとのViewController

コードで表示する必要があります:あなたのSQLが間違っている

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

。 update tablename set field1 = value1 and field2 = value2 id = xx

+0

これは以前よりもうまく動作しますが、レコードはコンソールで更新されているように見えますが、テーブルには更新されていません。 –

+0

Datumのようなsqliteマネージャを使用していますか?はいの場合、テーブルを自動的に再読み込みしないことがあります。リロードボタンを明示的にクリックする必要があります。それを試してください。 –

関連する問題