简体   繁体   中英

iOS SQLite Sum and retrieve data

I have a SQLite database that I am creating in my iOS application. A series of numbers are being stored in this database. I want to sum the entire column, and return the data to be displayed within the application.

Everything writing to the DB is working properly, but I am stuck trying to return the summed data. Any help would be greatly appreciated.

-(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];

        }
    }
}

Hello Nathan making a call as

[self  dataReturn:@"Bill"]; 

to function

-(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);
            }
        }
    }
}

will Fetch you desired data. The schema for Table "Bill" is "CREATE TABLE Bill (price double,quantity INTEGER)". The result fetched will have columns indexed from "0" so we pass 0 for first column. Hope you can take some hint from it. Cheers!!

int field1 =  sqlite3_column_int(statement, 0);

From the sqlite3_column_int docs:

The leftmost column of the result set has the index 0.

Additionally, that function returns an int , not an int* . Try:

int field2 = sqlite3_column_int(statement, 0);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM