iOS sqlite вернет NULL при использовании инструкции SELECT - PullRequest
1 голос
/ 27 декабря 2011

Я очень озадачен, почему оператор SELECT не работает правильно. Это не дает мне никаких ошибок, просто возвращает ноль. Я знаю, что она пишет строку правильно, и есть правильная строка, просто она не читает правильно. Все, насколько я знаю, правильно, потому что я использую тот же «метод» SQLstmt для многих других методов / функций, подобных этому. Этот просто не имеет смысла, почему он не должен работать.

- (NSString *)returnNote {
    selStmt=nil;

    NSLog(@"Reading note");

    NSString *SQLstmt = [NSString stringWithFormat:@"SELECT 'Notes' FROM '%@' WHERE Exercises = '%@';", currentRoutine, currentExercise];

    // Build select statements
    const char *sql = [SQLstmt UTF8String];

    if (sqlite3_prepare_v2(database, sql, -1, &selStmt, NULL) != SQLITE_OK) {
        selStmt = nil;
    }

    // Building select statement failed
    if (!selStmt) {
        NSAssert1(0, @"Can't build SQL to read Exercises [%s]", sqlite3_errmsg(database));
    }

    NSString *note = [NSString stringWithFormat:@"%s", sqlite3_column_text(selStmt, 0)];

    sqlite3_reset(selStmt); // reset (unbind) statement

    return note;
}

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Вы не звоните sqlite3_step .Оператор никогда не выполняется.

0 голосов
/ 27 декабря 2011
    NSString *querySQLS1 = [NSString stringWithFormat: @"SELECT Notes FROM \"%@\" where Exercises=\"%@\"", currentRoutine, currentExercise];
    sqlite3_stmt *statements;
    const char *query_stmts1 = [querySQLS1 UTF8String];

    if(sqlite3_prepare_v2(UsersDB, query_stmts1, -1, &statement, NULL) == SQLITE_OK)
    {
        NSLog(@"in prepare");
        if (sqlite3_step(statement) == SQLITE_ROW)
        {
            NSLog(@"Query executed");

        } 
        else {
            NSLog(@"in else");
        }

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