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()
}
}
}
이것은 이전보다 좋게 작동합니다. 레코드는 콘솔에서 업데이트 된 것으로 볼 수 있지만 테이블에서는 업데이트되지 않습니다. –
Datum과 같은 sqlite 관리자를 사용하고 있습니까? 그렇다면 때때로 테이블을 자동으로 다시로드하지 않습니다. 재로드 버튼을 명시 적으로 클릭해야합니다. 시도해 봐. –