我正在开发一个从互联网上提取数据的应用程序,并且在没有连接的情况下,有一个本地数据库来存储这些数据。
我能够很好地存储和提取数据库中的数据,但我似乎无法获得数据库中项目的计数。
这是我的代码:
func getCount(tableName:String) -> Int {
let sql = "SELECT COUNT(id) FROM " + tableName
print(sql) // <---- prints out the complete SQL, works fine
let resultSet: FMResultSet! = sharedInstance.database!.executeQuery(sql, withArgumentsInArray: nil)
var count = 0
if resultSet != nil {
print("Database not empty")
while resultSet.next() {
count += 1
}
return count
} else {
return 0
}
}
问题
不幸的是,即使我的getCount
功能似乎无法正常工作,因为它始终会返回0.它甚至不会超过if resultSet != nil
部分。
是的,数据库表中至少有一个项目,并且在SQLiteBrowser中手动放入该查询会得到我的结果。
我做错了什么?
答案 0 :(得分:0)
你做错了就是忽视错误处理。
查看你的代码:你的函数返回0的代码路径是什么?
有两个:
由于SELECT COUNT(id)
语句不能返回任何行,这意味着您有数据库错误。
既然你忽略了它(通过返回0)你就不知道会发生什么,而且在堆栈溢出时,你是无能为力的。
简而言之:处理错误。