无法使用Swift 3在FMDB中执行更新



我正在使用fmdb作为我的可可录中的依赖性。插入,删除和选择操作工作正常,但我无法更新一行。

这是我的代码

数据库和表创建

let filemgr = FileManager.default
let dirPaths = filemgr.urls(for: .documentDirectory,
                            in: .userDomainMask)
let databasePath = dirPaths[0].appendingPathComponent("database.sqlite").path
defaults.set(String(databasePath), forKey: "databasePath")
let dbObj = FMDatabase(path: defaults.value(forKey: "databasePath") as! String)
if dbObj == nil {
    print("Error: (dbObj?.lastErrorMessage())")
}
if (dbObj?.open())!
{
    let sql_stmt = "CREATE TABLE IF NOT EXISTS TABLE_TICKET (ID INTEGER PRIMARY KEY AUTOINCREMENT, TICKET_SUBJECT TEXT, TICKET_DESCRIPTION TEXT, DEPARTMENT_ID TEXT, PRIORITY_ID TEXT NOT NULL, TYPE_ID TEXT NOT NULL, TICKET_ATTACHMENT TEXT, STAFF_NAME TEXT NOT NULL, TICKET_NO TEXT NOT NULL, TICKET_ID TEXT NOT NULL, TICKET_STATUS TEXT NOT NULL,TICKET_OFFLINE_FLAG TEXT NOT NULL,TICKET_DATE TEXT NOT NULL, TICKET_UPDATE_TIME TEXT )"
    if !(dbObj?.executeStatements(sql_stmt))! {
        print("Error: (dbObj?.lastErrorMessage())")
    }
    dbObj?.close()
}
else
{
    print("Error: (dbObj?.lastErrorMessage())")
}

更新操作

   if (dbObj?.open())!
   {
        let updatedTime = String(describing: json["response"]["CurrentDateTime"])
        print(updatedTime)
        let deleteSQL = "UPDATE TABLE_TICKET SET ticket_update_time = '(updatedTime)' WHERE ticket_id ='(self.currentTicketID!)'"
        do {      
              try dbObj?.executeUpdate("UPDATE TABLE_TICKET SET ticket_update_time=? WHERE ticket_id=?", withArgumentsIn: [updatedTime, self.currentTicketID!])  
           }
           catch {
               print(error)
           }
    } else {
        print("Error: (dbObj?.lastErrorMessage())")
    }

搜索此问题后,我发现必须将数据库复制到特定位置,以免仅阅读。如果是这样,我将其存储在错误的位置?

注意:执行此代码时我没有遇到任何错误。更新后的列更新后具有空白值(插入为空白)。

只要您对备份备份到iCloud:

使用此目录存储用户生成的内容。可以通过文件共享向用户提供此目录的内容;因此,他的目录应仅包含您可能希望向用户暴露的文件。 该目录的内容由iTunes和iCloud备份。

就更新而言,如果您能够插入,我认为您的数据库不仅读取。根据我的经验,我必须在下载的任何新数据库文件上设置权限,例如:

let attributes: [String:AnyObject] = [FileAttributeKey.posixPermissions.rawValue: NSNumber(value: 0o777)]
                        let fileContents = self.fileManager.contents(atPath: tempURL.path)
                        let success = self.fileManager.createFile(atPath: preferredURL.path, contents: fileContents, attributes: attributes)

,如果仅更新查询失败,我将仔细检查数据和查询。

最新更新