다음은 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())")
}
}
업데이트 쿼리가 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())")
}
}
관련없는 관찰에서, 위에서 ?
문자열 보간을 사용하여 SQL을 빌드하지 않고 SQL에 자리 표시자를 사용했음을 알 수 있습니다. 자리 표시자를 사용하지 않으면 일련의 가능한 문제가 발생할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다