iOS SQLite Sum и извлечение данных - PullRequest
3 голосов
/ 05 июля 2011

У меня есть база данных SQLite, которую я создаю в своем приложении для iOS.Ряд номеров хранятся в этой базе данных.Я хочу суммировать весь столбец и вернуть данные, которые будут отображены в приложении.

Все операции записи в БД работают правильно, но я застрял, пытаясь вернуть суммированные данные.Любая помощь будет принята с благодарностью.

-(void) dataReturn: (NSString *) tableNamed{
    NSString *myData = [NSString stringWithFormat:@"SELECT SUM(column1) AS data1 FROM myDB", tableNamed];

    sqlite3_stmt *statement;

    if(sqlite3_prepare_v2(db, [myData UTF8String], -1, &statement, nil) ==SQLITE_OK){
        while (sqlite3_step(statement) == SQLITE_ROW){

            int *field2 = (int *) sqlite3_column_int(statement, 1);

            NSString *myString =[[NSString alloc] initWithFormat:@"%@", field2];

        }
    }
}

Ответы [ 2 ]

4 голосов
/ 06 июля 2011

Привет Натан, звонящий как

[self  dataReturn:@"Bill"]; 

для работы

-(void)dataReturn:(NSString *)tableName{

    sqlite3 *database;
    sqlite3_stmt *statement;

    NSString *queryString = [NSString stringWithFormat:@"SELECT SUM(price) AS TOTAL FROM %@", tableName];

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

        if(sqlite3_prepare_v2(database, [queryString UTF8String], -1, &statement, nil) == SQLITE_OK){
            while (sqlite3_step(statement) == SQLITE_ROW) {
                    int field1 =  sqlite3_column_int(statement, 0);
                    NSLog(@"The sum is  %d ", field1);
            }
        }
    }
}

Принесет вам нужные данные. Схема для Таблицы "Билл" является "CREATE TABLE Билл (цена двойная, количество INTEGER)". Полученные результаты будут иметь столбцы с индексом "0", поэтому мы передаем 0 для первого столбца. Надеюсь, ты сможешь извлечь из этого намек Ура !!

int field1 =  sqlite3_column_int(statement, 0);
3 голосов
/ 06 июля 2011

Из sqlite3_column_int документов:

Крайний левый столбец набора результатов имеет индекс 0.

Кроме того, эта функция возвращает int, а не int*. Попробуйте:

int field2 = sqlite3_column_int(statement, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...