Firefoxのブックマークのデータベース、places.sqliteの中のテーブル、moz_placesのurl列のデータを書き換えたいが、SQLを実行してエラーも出ないが反映もされない。
環境
Xcode 12.1
macOS Catalina 10.15.7
Swift
1let CONST_UPDATE = "UPDATE moz_places SET url = ? WHERE id = ?" 2 3 func updateData() -> Bool { 4 //SQL実行のエラー 5 var blError = false 6 //表示用のエラーコード 7 var errorCode = "" 8 let op = NSOpenPanel() 9 op.canChooseFiles = true 10 op.canChooseDirectories = false 11 op.allowsMultipleSelection = false 12 op.allowedFileTypes = ["sqlite"] 13 14 op.directoryURL = self.openURL 15 16 if op.runModal() == NSApplication.ModalResponse.OK { 17 //DBに接続 18 var db: OpaquePointer? = nil 19 var ret = sqlite3_open_v2(self.localBackupFile!.absoluteString, &db, SQLITE_OPEN_URI | SQLITE_OPEN_SHAREDCACHE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_READWRITE, nil) 20 21 if ret == SQLITE_OK { 22 print("DB was opened.") 23 } else { 24 print("DB couldn't be opened.") 25 return false 26 } 27 28 print("(db.debugDescription)") 29 30 //ファイルの削除処理 31 for i in 0 ..< self.myList.count { 32 blError = false 33 if self.blReplaceURL == true { 34 //BEGIN TRANSACTION 35 var beginTransStatement: OpaquePointer? = nil 36 37 38 ret = sqlite3_prepare_v2(db, self.CONST_BEGIN_TRANSACTION, -1, &beginTransStatement, nil) 39 if ret == SQLITE_OK { 40 41 ret = sqlite3_step(beginTransStatement) 42 if ret == SQLITE_DONE { 43 print("BEGIN TRANSACTION for URL") 44 var updateStatement: OpaquePointer? = nil 45 46 ret = sqlite3_prepare_v2(db, self.CONST_UPDATE, -1, &updateStatement, nil) 47 if ret == SQLITE_OK { 48 //if sqlite3_bind_text(updateStatement, 1, (self.myList[i].Url as NSString).utf8String, -1, nil) != SQLITE_OK { 49 if sqlite3_bind_text(updateStatement, 1, self.myList[i].Url.cString(using: String.Encoding.utf8), -9, nil) != SQLITE_OK { 50 51 print("ERROR p1: %s", sqlite3_errmsg(db)) 52 } 53 if sqlite3_bind_int(updateStatement, 2, Int32(self.myList[i].id)) != SQLITE_OK { 54 print("ERROR p2: %s", sqlite3_errmsg(db)) 55 } 56 ret = sqlite3_step(updateStatement) 57 if ret == SQLITE_DONE { 58 print("DID UPDATE") 59 var endTransStatement: OpaquePointer? = nil 60 ret = sqlite3_prepare_v2(db, self.CONST_END_TRANSACTION, -1, &endTransStatement, nil) 61 if ret == SQLITE_OK { 62 ret = sqlite3_step(endTransStatement) 63 if ret == SQLITE_DONE { 64 print("END TRANSACTION") 65 } else { 66 print("RAISED ERROR") 67 blError = true 68 errorCode = "9-" + String(ret) 69 } 70 } else { 71 print("RAISED ERROR") 72 blError = true 73 errorCode = "8-" + String(ret) 74 } 75 sqlite3_finalize(endTransStatement) 76 } else { 77 print("RAISED ERROR") 78 blError = true 79 errorCode = "7-" + String(ret) 80 } 81 } else { 82 print("RAISED ERROR") 83 blError = true 84 errorCode = "6-" + String(ret) 85 } 86 sqlite3_finalize(updateStatement) 87 88 if blError == true { 89 var rollbackStatement: OpaquePointer? = nil 90 if sqlite3_prepare_v2(db, self.CONST_ROLLBACK, -1, &rollbackStatement, nil) == SQLITE_OK { 91 if sqlite3_step(rollbackStatement) == SQLITE_DONE { 92 print("DID ROLLBACK") 93 } else { 94 print("FAULT ROLLBACK") 95 } 96 } else { 97 print("FAULT ROLLBACK") 98 } 99 sqlite3_finalize(rollbackStatement) 100 } 101 } else { 102 errorCode = "2-" + String(ret) 103 } 104 } else { 105 errorCode = "1-" + String(ret) 106 } 107 sqlite3_finalize(beginTransStatement) 108 } 109 } 110 //sqlite3_finalize(queryStatement) 111 sqlite3_close(db) 112 print("Finished!") 113 114 //let panel = NSAlert() 115 116 let manager = FileManager.default 117 118 do { 119 try manager.removeItem(at: op.url!) 120 try manager.copyItem(at: self.localBackupFile!, to: op.url!) 121 } catch { 122 print("(error)") 123 return false 124 } 125 126 } 127 return blError 128 } 129
コンソールに何が表示されるか書いてください
DB was opened.
Optional(0x0000000101a162d0)
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
BEGIN TRANSACTION for URL
DID UPDATE
END TRANSACTION
Finished!
ログデータが長すぎて投稿出来ないようだったので、途中同じデータですので、削除して、短くして投稿しました。
よろしくお願いします。
ちょっと気になったんですけど、self.CONST_END_TRANSACTION これの中身どうなってます?
ありがとうございます。
let CONST_END_TRANSACTION = "END TRANSACTION"
となっております。
回答2件
あなたの回答
tips
プレビュー