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()
}
}
}
これは以前よりもうまく動作しますが、レコードはコンソールで更新されているように見えますが、テーブルには更新されていません。 –
Datumのようなsqliteマネージャを使用していますか?はいの場合、テーブルを自動的に再読み込みしないことがあります。リロードボタンを明示的にクリックする必要があります。それを試してください。 –