我可以在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)
{
}
答案 0 :(得分: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(database); } return keyId; } }