sqlite_step (statment). возвращает 100 - PullRequest
1 голос
/ 05 октября 2011

я пытаюсь получить доступ к базе данных sqlite, sqlite3_step должен вернуть 0 ??но это не так!

if(sqlite3_open([DatabasePath UTF8String],&database)==SQLITE_OK){
    self.searchtext.text=DatabasePath ;

    const char *sql="select *from cars";
    sqlite3_stmt *selectstatment;


    if(sqlite3_prepare_v2(database,sql,-1,&selectstatment,Nil)==SQLITE_OK){
        self.searchtext.text=@" database prepared";

        while(sqlite3_step(selectstatment)==SQLITE_OK){
            // fetch the id
            SQLITETEST10000AppDelegate *carobject=[[SQLITETEST10000AppDelegate alloc] init ];
             carobject->primarykey=sqlite3_column_int(selectstatment, 0);
            //fetch the name
             carobject.carname =[NSString stringWithUTF8String:(char*)sqlite3_column_int(selectstatment, 1)];

            [appdelegate.Cars addObject:carobject];

            [carobject release];   
        }
    }else self.searchtext.text=@" database Not prepared";
}

1 Ответ

4 голосов
/ 05 октября 2011

Вы должны прочитать документацию по API sqlite3 C (эта страница для функции sqlite3_step)

sqlite3_step может возвращать несколько значений, наиболее распространенными, когда все в порядке, являются SQLITE_ROW, чтобы сообщить, что он успешно возвратил строку, и SQLITE_DONE, когда он завершил итерацию всех строк, возвращаемых запросом. sqlite3_step никогда не возвращается SQLITE_OK.

Значение 100 (см. страница кодов результатов также в документе ) соответствует SQLITE_ROW, так что это полностью то, что ожидается в вашем случае.

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