2016-12-19 47 views
0

我正在使用FMDB作爲我的cocoapod中的依賴項。插入,刪除和選擇操作正常,但我無法更新一行。無法使用swift在FMDB中執行更新3

這裏是我的代碼

數據庫和表創建

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

在尋找這個問題,我發現分貝必須複製到一個特定的位置,以便它不會被讀取。如果是這樣,我將它存儲在錯誤的位置?

注意:執行此代碼時我沒有收到任何錯誤。更新後的更新列有空白值(插入爲空白)。

回答

0

的位置,只要你是舒適與它備份到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) 

我會仔細檢查數據,並如果只更新查詢失敗的查詢。

相關問題