2015-11-19 2 views
0

Примерно у меня есть этот код:странное поведение sqlite3_step (не переходит к следующей строке)

querySQL = [NSString stringWithFormat:@"SELECT id, contactid, txtcontent, strDate, direction, status, priority, status_r....." 
const char * query_stmt = [querySQL UTF8String]; 
if(sqlite3_prepare(db, query_stmt, -1, &statement, nil) == SQLITE_OK) { 
    int rc; 
    while ((rc = sqlite3_step(statement)) == SQLITE_ROW) { 
     .... 
    } 
} 

На любой iPhone работающей 9.x, нет никаких проблем, и приложение читает каждый раз, когда новый ряд. На любом iPhone 4, работающем 7.x, точно такой же код остается в одной строке и входит в тупиковый контур. У кого-нибудь была эта проблема?

+0

Показать предыдущий код. –

+0

Код длинный, но все еще отлично работает на iphone5, 6, ipad running 9.x \t \t querySQL = [NSString stringWithFormat: @ "SELECT id, contactid, txtcontent, strDate, direction, status, priority, status_r .... . \t \t Const символ * query_stmt = [querySQL UTF8String]; , если (sqlite3_prepare (дБ, query_stmt, -1, & утверждение, ноль) == SQLITE_OK) { INT гс; в то время как ((гс = sqlite3_step (ведомость)) == SQLITE_ROW) { \t \t \t \t .... \t \t \t} \t \t} – men

+0

Я только что добавил sqlite3_errmsg (db) в цикле, и действительно вижу сообщение об ошибке: unknown error (100). Но все же странно, что код 100, который на самом деле SQLITE_ROW. Есть ли способ диагностировать проблему? – men

ответ

0

Это, наконец, кажется, что запрос был что-то вроде

querySQL = "select * from messages order by date desc, date desc"; 

где состояние заказа по ошибке появился дважды, и это вызвало sqlite3_step остаться на той же строке. Этот же код работал несколько лет без каких-либо проблем и все еще работает и выше уровней iOS. Странный.

Смежные вопросы