[英]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.