fMDBを使用するときにクエリのカウントを返す方法を知っている人はいますか? Query @ "select count(*)from sometable was ..."を実行すると、空の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(*)をcountとしてクエリに追加するだけです。
いつでも適切なSQLステートメントを実行できます。私は次のようなことをします:
FMResultSet *rs = [database executeQuery:@"select count(*) as count from words"];
[rs next];
wordsThatExist = [rs intForColumn:@"count"];
SQLクエリの設定は、反復するよりも速くて安価かもしれません。カウントは安いと思います。
Swift「intForColumn」へのマイナーな変更のために更新されました
if let rs = db.executeQuery("SELECT COUNT(*) as Count FROM TABLE_NAME", withArgumentsInArray: nil) {
while rs.next() {
print("Total Records:", rs.int(forColumn: "Count"))
}
}
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"))
}
}
次のコードを試してみてください、これは私のために働きます
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)
あなたはフィールドのカウントを取得します