[英]FMDB SQLite question: row count of a query?
有沒有人知道如何在使用FMDB時返回查詢計數? 如果我執行Query @“selecttable(*)from sometable是......”我得到一個空的FMResultSet。 如何獲取查詢的行數? 我是否需要執行諸如“select * from sometable where ..”之類的查詢並迭代結果集? 或者我可以使用useCount或最好的方式(在性能方面)做到這一點?
謝謝!
更短的代碼來完成同樣的事情:
NSUInteger count = [db intForQuery:@"SELECT COUNT(field) FROM table_name"];
確保包含FMDatabaseAdditions.h
頭文件以使用intForQuery:
.
嘗試這個。 這個對我有用。 不建議迭代所有記錄。
FMResultSet *rs = [db executeQuery:@"select count(FIELD) as cnt from TABLENAME"];
while ([rs next]) {
NSLog(@"Total Records :%d", [rs intForColumn:@"cnt"]);
}
也許你應該檢查你的Where子句。
此代碼段將為您打印計數。
if let rs = db.executeQuery("SELECT COUNT(*) as Count FROM TABLE_NAME", withArgumentsInArray: nil) {
while rs.next() {
print("Total Records:", rs.intForColumn("Count"))
}
}
如果它不起作用,一些建議:
a)在項目中查找let database =
或var database =
。 如果找到一個,則將db
更改為database
b)您是否將Select語句中的TABLE_NAME更改為調用表的任何內容?
第一個也是正確的但是通過使用這種方法,您可以使用相同的查詢檢索記錄和計數,不用編寫另一個查詢。 只需將count(*)作為計數添加到查詢中即可。
您總是可以運行正確的SQL語句。 我做的事情如下:
FMResultSet *rs = [database executeQuery:@"select count(*) as count from words"];
[rs next];
wordsThatExist = [rs intForColumn:@"count"];
設置SQL查詢可能比迭代更快更便宜..我相信數量很便宜。
已更新為Swift 3次要更改為“int For Column”
if let rs = db.executeQuery("SELECT COUNT(*) as Count FROM TABLE_NAME", withArgumentsInArray: nil) {
while rs.next() {
print("Total Records:", rs.int(forColumn: "Count"))
}
}
請嘗試以下代碼,這對我有用
let objManager = ModelManager.getInstance()
objManager.database?.open()
let resultSet1: FMResultSet! = sharedInstance.database!.executeQuery("SELECT COUNT(Field) FROM TableName”, withArgumentsInArray:nil)
if (resultSet1 != nil)
{
while resultSet1.next()
{
countRecord = Int(resultSet1.intForColumn("COUNT(Field)"))
}
}
print(countRecord)
你會得到伯爵的數量
已更新為方法參數名稱中的Swift 4次要更改
if let rs = db.executeQuery("SELECT COUNT(*) as Count FROM TABLE_NAME", withArgumentsIn: nil) {
while rs.next() {
print("Total Records:", rs.int(forColumn: "Count"))
}
}
如果你想在結果之前知道行的數量,你甚至可以做一個簡單的查詢並詢問結果columnCount,它給你行數,你可以保存一個查詢,如果你真的想要做一些事情使用resultSet
FMResultSet *results = [database executeQuery:@"SELECT * from tableName"];
int numberOfRows = [results columnCount];
while ([results next]){
... do your stuff ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.