0

iOS ネイティブ ライブラリを使用して SQLite で単一行のクエリ結果を取得する方法がわかりませんでした。実際、COUNT(*)を作成するために必要ですが、私が見つけた唯一の方法は次のとおりです。

- (int)HowManyInMyDB:(int)user_id {

int isInDB = 0;


NSString *query = [NSString stringWithFormat:@"SELECT * FROM USER WHERE user_id=%d;", user_id];

const char * sql = [query UTF8String];

sqlite3_stmt *statement;



if (sqlite3_prepare_v2(_database, sql, -1, &statement, nil)

    == SQLITE_OK) {

    while (sqlite3_step(statement) == SQLITE_ROW) {

        isInDB++;

    }

    sqlite3_finalize(statement);

}

    return isInDB;

}

しかし、それは信頼できる方法だとは思いませんよね?COUNT(*) クエリを実行すると、単に答えをキャッチする方法がわかりませんでした。回答ありがとうございます!さようなら

4

2 に答える 2

0

同じuser_idを持つUSERテーブルの行数を見つけようとしているように見えますか? 「SELECT COUNT(*) AS answer FROM USER WHERE user_id = %d」のような SQL クエリを使用する必要があります。これにより、1 行の出力が生成され、その出力には、値が目的の数値であるエントリ「answer」が含まれます。SQLite API を使用して 1 行を読み取り、その「回答」エントリから値を取得する必要があります。したがって、sqlite3_step() を 1 回呼び出し、sqlite3_column_count() を 1 回呼び出して、結果を受け取ったことを再確認し (1 を返す必要があります)、sqlite3_column(statement, 0) を 1 回呼び出して、最初の列から結果を取得します。

于 2013-06-19T01:45:56.953 に答える