沒有人知道如何使用FMDB返回查詢的計數?如果我executeQuery @「selecttable(*)from sometable ...」我得到一個空的FMResultSet回來。我怎樣才能得到查詢的行數?我是否需要執行查詢,如「select * from sometable where ..」並遍歷結果集?或者我可以使用useCount或最好的方式(就性能而言)來做到這一點?FMDB SQLite問題:查詢的行數?
謝謝!
沒有人知道如何使用FMDB返回查詢的計數?如果我executeQuery @「selecttable(*)from sometable ...」我得到一個空的FMResultSet回來。我怎樣才能得到查詢的行數?我是否需要執行查詢,如「select * from sometable where ..」並遍歷結果集?或者我可以使用useCount或最好的方式(就性能而言)來做到這一點?FMDB SQLite問題:查詢的行數?
謝謝!
較短的代碼來完成同樣的事情:
NSUInteger count = [db intForQuery:@"SELECT COUNT(field) FROM table_name"];
確保包括FMDatabaseAdditions.h
header file使用intForQuery:
。
試試這個。這個對我有用。不建議重複所有記錄。
FMResultSet *rs = [db executeQuery:@"select count(FIELD) as cnt from TABLENAME"];
while ([rs next]) {
NSLog(@"Total Records :%d", [rs intForColumn:@"cnt"]);
}
可能是你應該檢查你的Where子句。
完善!謝謝! – Fuggly 2010-11-29 09:41:15
偉大:)工作正常 – 2013-02-27 11:20:04
第一個也是對的,但通過使用這種方法,您可以使用相同的查詢來檢索記錄和計數,而不用再編寫另一個。只需將count(*)作爲count添加到您的查詢中即可。
你總是可以運行正確的SQL語句。我做類似的東西:
FMResultSet *rs = [database executeQuery:@"select count(*) as count from words"];
[rs next];
wordsThatExist = [rs intForColumn:@"count"];
設置SQL查詢可能會更快,更便宜,然後迭代..我相信計數很便宜。
如果你想知道結果之前的行數,你甚至可以做一個簡單的查詢,並要求結果columnCount給你的行數,如果你真的可以保存一個查詢想做出點與ResultSet中
FMResultSet *results = [database executeQuery:@"SELECT * from tableName"];
int numberOfRows = [results columnCount];
while ([results next]){
... do your stuff ...
}
Doesn 'columnCount給你列的數量而不是行數?我不相信這是一個正確的答案。 – 2015-03-19 15:27:56
該代碼段將打印計數爲您服務。
if let rs = db.executeQuery("SELECT COUNT(*) as Count FROM TABLE_NAME", withArgumentsInArray: nil) {
while rs.next() {
print("Total Records:", rs.intForColumn("Count"))
}
}
如果沒有工作,提出幾點建議:
一)請在您的項目,說:let database =
或var database =
線。如果你找到一個,然後更改db
到database
b)您是否將Select語句中的TABLE_NAME更改爲您的表被調用的任何內容?
請嘗試下面的代碼,這對我的作品
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)
你會得到場
計數更新的斯威夫特3小的改動,以 「int對於列」
if let rs = db.executeQuery("SELECT COUNT(*) as Count FROM TABLE_NAME", withArgumentsInArray: nil) {
while rs.next() {
print("Total Records:", rs.int(forColumn: "Count"))
}
}
謝謝,這也適用於,酷:-) – Fuggly 2010-12-03 12:06:48
+1投票給你einsteinx2的短和更甜的版本。 – palaniraja 2010-12-05 16:22:13
非常感謝! :D – Stormer 2014-08-12 14:42:01