>

iOS 앱이 전화를 끊고 있습니다

sqlite3_exec(database, "COMMIT", 0, 0, 0);

다음은 완전한 기능입니다.

-(void)clearCarts
{
    sqlite3_exec(database, "BEGIN", 0, 0, 0);
    sqlite3_stmt *stmt = nil;
    const char *sql = "DELETE FROM carts";
    if(sqlite3_prepare_v2(database, sql, -1, &stmt, NULL) != SQLITE_OK)
        NSAssert1(0, @"Error:'%s'", sqlite3_errmsg(database));
    if (SQLITE_DONE != sqlite3_step(stmt))
        NSAssert1(0, @"Error:'%s'", sqlite3_errmsg(database));
    sqlite3_reset(stmt);
    sqlite3_finalize(stmt);
    sqlite3_exec(database, "COMMIT", 0, 0, 0);// terminates here
}

sqlite3_close(database) 를 사용해야하는 이유와 위치는 무엇입니까?   sqlite3_close(database) 로  어떤 기능에도 사용되지 않습니다. 미리 감사드립니다.

  • 답변 # 1

    쿼리를 실행하기 위해 데이터베이스를 열지 않기 때문에 sqlite3_close(database) 를 사용해야합니다.  명령문을 실행 한 후.

    아래 코드로 시도

    sqlite3 *database;
    sqlite3_stmt *selectstmt;
    if (sqlite3_open([yourDatabasePath UTF8String], &database) == SQLITE_OK)
    {
        NSString  *sql = [NSString stringWithFormat:@"DELETE FROM carts"];
        const char *insert_stmt = [sql UTF8String];
        sqlite3_prepare_v2(database,insert_stmt, -1, &selectstmt, NULL);
        if(sqlite3_step(selectstmt)==SQLITE_DONE)
        {
            NSLog(@"Delete successfully");
        }
        else
        {
            NSLog(@"Error while Clean Database. '%s'", sqlite3_errmsg(database));
        }
        sqlite3_finalize(selectstmt);
    }
    sqlite3_close(database);
    
    

관련 자료

  • 이전 swift - NSPrintPanel의 미리보기를 업데이트하는 방법?
  • 다음 c# - ews 관리 형 api 20 - 모든 반복 약속을 포함한 calendarview 렌더링