2012-12-21 2 views
1

xcode에서 다음 쿼리를 실행 중입니다. 그러나 결과가 반환되지 않습니다. 나는 결과를 리턴해야하고 sqlite 브라우저에서 동일한 쿼리를 실행하여 동일하게 확인할 수 있다고 확신한다. 그러나 xcode 내에서 sqlite3_step은 코드 101을 반환합니다. 여기서 내가 뭘 잘못하고 있니?SQLite 쿼리가 결과를 반환하지 않습니다.

NSMutableArray *pages = [[NSMutableArray alloc] init]; 

    char *query = " \ 
    drop table if exists tempT; \ 
    \ 
    create temporary table tempT \ 
    as \ 
    select \ 
    Page \ 
    from \ 
    (\ 
    select 1 as Sort, 'Home' as Page \ 
    union \ 
    select 2 as Sort, 'Research' as Page \ 
    union \ 
    select distinct 3 as Sort, Category as Page from Researches \ 
    union \ 
    select 4 as Sort, 'Drafts' as Page \ 
    union \ 
    select 5 as Sort, 'Outbox' as Page \ 
    union \ 
    select 6 as Sort, 'Download' as Page \ 
    union \ 
    select 7 as Sort, 'Settings' as Page \ 
    union \ 
    select 8 as Sort, 'Deleted' as Page \ 
    ) as Sub \ 
    ORDER BY Sort, Page \ 
    ; \ 
    \ 
    select Page from tempT order by rowid \ 
    "; 
    sqlite3_stmt *stmt; 
    if (sqlite3_prepare_v2(database, query, -1, &stmt, nil) == SQLITE_OK) 
    { 
     while (sqlite3_step(stmt) == SQLITE_ROW) 
     { 
      [pages addObject: [NSString stringWithUTF8String: (char *)sqlite3_column_text(stmt, 0)]]; 
     } 

     sqlite3_finalize(stmt); 
    } 

    return pages; 

답변

0

sqlite3_prepare_v2가 첫 번째 문을 준비, 별도로 3 문을 실행해야합니다.

참조 : http://www.sqlite.org/c3ref/prepare.html

pzTail 다음 NULL이 아닌 * pzTail가 zSql의 첫 번째 SQL 문의 끝을지나 첫 번째 바이트를 가리 키도록했을 경우. 이러한 루틴은 zSql의 첫 번째 명령문 만 컴파일하므로 * pzTail은 컴파일되지 않은 상태를 가리 킵니다.

관련 문제