Mun*_*man 2 sqlite fmdb ios swift
这是我尝试更新count表中的字段的函数。但它没有更新该值。查询 100% 正常,因为我已经在外部数据库软件中尝试过了。可能是我使用了错误的函数来执行我的语句?
func updateLocalCount(var localCounter: Int)
{
let contactDB = FMDatabase(path: databasePath as String)
if contactDB.open()
{
let querySQL = "UPDATE Darood SET count='\(localCounter)' WHERE title='\(myTitle)'"
let results:FMResultSet? = contactDB.executeQuery(querySQL,
withArgumentsInArray: nil)
print(querySQL)
contactDB.close()
print("local count \(localCounter)")
}
else
{
print("Error: \(contactDB.lastErrorMessage())")
}
}
Run Code Online (Sandbox Code Playgroud)
您应该使用executeUpdate, 而不是executeQuery更新查询。通过调用executeQuery(而不是调用next),您只是准备了一个查询,但从未执行过它。
因此,它可能如下所示:
func updateLocalCount(counter: Int, title: String) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB.open() {
defer { contactDB.close() }
do {
try contactDB.executeUpdate("UPDATE Darood SET count=? WHERE title=?", values: [counter, title])
} catch {
print(error)
}
} else {
print("Error: \(contactDB.lastErrorMessage())")
}
}
Run Code Online (Sandbox Code Playgroud)
在一个不相关的观察中,您会注意到,上面我?在 SQL 中使用了占位符,而不是使用字符串插值构建 SQL。如果不使用占位符,您就会面临一系列可能的问题。
| 归档时间: |
|
| 查看次数: |
3776 次 |
| 最近记录: |