簡體   English   中英

FMDB SQLite問題:查詢的行數?

[英]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子句。

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"))
    }
}

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

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM