没有人知道如何使用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