Как получить результаты из таблицы SQLite и присвоить ее переменным в Objective-C? - PullRequest
0 голосов
/ 13 декабря 2010

Я пытаюсь получить результаты из таблицы SQlite, а затем назначить их переменным в Objective-C.Мой метод, который делает это, выглядит следующим образом:

- (void) readRestaurantsFromDatabase {

//Setup the database object
sqlite3 *database;

//Init the restaurant array
restaurants = [[NSMutableArray alloc] init];

//Open the database from the users filesystem
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

    //setup the SQL statement and compile it for faster access
    const char *sqlStatement = "select * from restaurant";
    sqlite3_stmt *compiledStatement;

    if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {

        //loop through the results and add them to the feeds array
        while (sqlite3_step(compiledStatement) == SQLITE_ROW) {

            //read the data from the result row
            NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
            NSString *aAddress = [NSString stringWithUTF8String:(char *)sqlite_coluumn_text(compiledStatement, 2)];
            NSString *aCity = [NSString stringWithUTF8String:(char *)sqlite_coluumn_text(compiledStatement, 3)];
            NSString *aProvinceState = [NSString stringWithUTF8String:(char *)sqlite_coluumn_text(compiledStatement, 4)];
            NSString *aPostalZipCode = [NSString stringWithUTF8String:(char *)sqlite_coluumn_text(compiledStatement, 5)];
            NSString *aCountry = [NSString stringWithUTF8String:(char *)sqlite_coluumn_text(compiledStatement, 6)];
            NSString *aPhoneNumber = [NSString stringWithUTF8String:(char *)sqlite_coluumn_text(compiledStatement, 7)];
            NSString *aHours = [NSString stringWithUTF8String:(char *)sqlite_coluumn_text(compiledStatement, 8)];
            //double aLat
            //double aLon

            Restaurant *restaurant = [[Restaurant alloc] initWithName:aName address:aAddress city:aCity provinceState:aProvinceState postalZipCode:aPostalZipCode country:aCountry phoneNumber:aPhoneNumber hours:aHours latitude:aLat longitude:aLon];

            //add the restaurant object to the restaurant array
            [restaurants addObject:restaurant];

            [restaurant release];

        }


    }

    sqlite3_finalize(compiledStatement);

}

sqlite3_close(database);

}

У меня нет проблем с извлечением строк из таблицы sqlite.Моя путаница заключается в том, как извлечь переменные широты и долготы из таблицы SQLite, которые хранятся в виде двойных чисел?Как бы я присвоил эти значения переменным double aLat и double aLon в моем коде выше?

Ответы [ 3 ]

3 голосов
/ 13 декабря 2010

Использование sqlite_column_double.Все просто:

double aLon = sqlite_column_double(compiledStatement, 9);
double aLat = sqlite_column_double(compiledStatement, 10);
0 голосов
/ 13 декабря 2010

Как вы сделали для других полей.Вы можете извлечь его и обработать двойное значение в виде строки.И я также предлагаю вам создать словарь.Вы можете хранить все свои данные в словаре.А потом вы можете получить к нему доступ в своем коде Objective C.

0 голосов
/ 13 декабря 2010

Самым простым, что я могу придумать, является создание NSNumber с плавающей точкой и получение из него двойного значения:

NSNumber *number = [NSNumber numberWithFloat:aFloat];
double aDouble = [number doubleValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...