FMDB SQLite问题:查询的行数?

Fug*_*gly 22 sqlite iphone objective-c fmdb

有没有人知道如何在使用FMDB时返回查询计数?如果我执行Query @"selecttable(*)from sometable是......"我得到一个空的FMResultSet.如何获取查询的行数?我是否需要执行诸如"select*from sometable where .."之类的查询并迭代结果集?或者我可以使用useCount或最好的方式(在性能方面)做到这一点?

谢谢!

Ben*_*ron 88

更短的代码来完成同样的事情:

NSUInteger count = [db intForQuery:@"SELECT COUNT(field) FROM table_name"];

确保包含要使用的FMDatabaseAdditions.h头文件intForQuery:.

  • intForQuery 的常规实现已经采用可变参数列表。只需将问号放在要使用变量的位置,然后将它们放在调用末尾,如下所示:`NSUInteger count = [db intForQuery:@"SELECT COUNT(?) FROM ?", fieldName, tableName];` (2认同)

pal*_*aja 21

试试这个.这个对我有用.不建议迭代所有记录.

FMResultSet *rs = [db executeQuery:@"select count(FIELD) as cnt from TABLENAME"];
while ([rs next]) {
    NSLog(@"Total Records :%d", [rs intForColumn:@"cnt"]);
}
Run Code Online (Sandbox Code Playgroud)

也许你应该检查你的Where子句.


rvg*_*rvg 5

Swift 2 示例

此代码片段将为您打印计数。

if let rs = db.executeQuery("SELECT COUNT(*) as Count FROM TABLE_NAME", withArgumentsInArray: nil) {
    while rs.next() {
        print("Total Records:", rs.intForColumn("Count"))
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,有一些建议:

a) 在您的项目中寻找一行显示let database =var database =。如果您找到一个 ,则更db改为database
b) 您是否将 Select 语句中的 TABLE_NAME 更改为您的表的名称?