2016-07-27 5 views
0

Probleme aktualisiert:Datensätze können nicht mit folgendem Code

Ich kann nicht mit dem Code unten in meinem Projekt eingefügte Datensätze aktualisieren. Wenn Update-Button geklickt wird, dann sollte Rekord upated werden und sollte in Viewcontroller

Code angezeigt:

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() 
     } 
    } 
} 

Antwort

0

Ihre SQL ist falsch. Update Tabellenname Feld1 = Wert1 und Feld2 = Wert2 wobei ID = xx

+0

Dies funktioniert gut besser als zuvor, Datensatz kann in der Konsole aktualisiert angezeigt werden, aber in der Tabelle ist es nicht aktualisiert. –

+0

Verwenden Sie einen SQLite Manager wie Datum? Wenn ja, laden sie die Tabelle manchmal nicht automatisch neu. Sie müssen explizit auf den Reload-Button klicken. Versuch das. –

Verwandte Themen