0

iOS5 では .sql ファイル (sqlite) からデータを受信できますが、ios6 では. アプリがハングアップしています..

クエリがselect * from Table完全に機能する場合

クエリが次の場合select *from Table order by ID DESC、アプリはハングしています

時々アプリがハングアップします(sqlite3_open([dbPath UTF8String],&db) == SQLITE_OK)

時々ハングアップします

while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
}
4

1 に答える 1

1

ステートメントを完成させ、操作を実行するたびに接続を適切に閉じます。そうすれば、sqliteで問題がないはずです。ステートメントがファイナライズされていない場合は、SQLITE_BUSY、SQLITE_LOCKEDなどの処理が必要な状態になります。アプリがハングしている場合は、メインスレッドがブロックされていることを意味します。以下はsqlite操作の例です。

-(int)keyIdForImgId:(int)ImgId
{{

    @synchronized(self)
    {{
        int keyId = 0;

        sqlite3 * database = nil;
        if(sqlite3_open([[self getDBPath] UTF8String]、&database)== SQLITE_OK){

            const char * sql = "SELECT keyId From SomeTableName WHERE imageId =?";
            sqlite3_stmt * selectstmt = nil;
            if(sqlite3_prepare_v2(database、sql、-1、&selectstmt、NULL)== SQLITE_OK){

                sqlite3_bind_int(selectstmt、1、ImgId);

                while(sqlite3_step(selectstmt)== SQLITE_ROW)
                {{

                    keyId = sqlite3_column_int(selectstmt、0);


                }

            }
            sqlite3_finalize(selectstmt);
            sqlite3_close(データベース);
        }
        keyIdを返します。

    }
}
于 2013-01-15T13:33:42.263 に答える