2016-04-26 59 views

回答

-1

1.Database更新

我有一个单一的数据库控制器 - VSDatabaseController在我最新的应用程序 - 即会谈通过FMDB SQLite的。 FMDB区分更新和查询。要更新数据库中的应用拨打电话:

-[VSDatabaseController runDatabaseBlockInTransaction:(VSDatabaseUpdateBlock)databaseBlock] 

VSDatabaseUpdateBlock很简单:

typedef void (^VSDatabaseUpdateBlock)(FMDatabase *database); 

runDatabaseBlockInTransaction也很简单:

- (void)runDatabaseBlockInTransaction:(VSDatabaseUpdateBlock)databaseBlock { 
    dispatch_async(self.serialDispatchQueue, ^{ 
     @autoreleasepool { 
      [self beginTransaction]; 
      databaseBlock(self.database); 
      [self endTransaction]; 
     } 
    }); 
} 

这里有一个调用来更新数据库的一个简单的例子: 全选全部

- (void)emptyTagsLookupTableForNote:(VSNote *)note { 
    NSString *uniqueID = note.uniqueID; 
    [self runDatabaseBlockInTransaction:^(FMDatabase *database) { 
     [database executeUpdate: 
      @"delete from tagsNotesLookup where noteUniqueID = ?;", uniqueID]; 
    }]; 
} 

[self.database executeUpdate: 
    @"CREATE INDEX if not exists noteUniqueIDIndex on tagsNotesLookup (noteUniqueID);"]; 
  • 数据库中获取

    要提取的对象,应用程序调用:

  • SELECT ALL

    -[VSDatabaseController runFetchForClass:(Class)databaseObjectClass 
              fetchBlock:(VSDatabaseFetchBlock)fetchBlock 
             fetchResultsBlock:(VSDatabaseFetchResultsBlock)fetchResultsBlock]; 
    These two lines do much of the work: 
    SELECT ALL 
    FMResultSet *resultSet = fetchBlock(self.database); 
    NSArray *fetchedObjects = [self databaseObjectsWithResultSet:resultSet 
                     class:databaseObjectClass]; 
    

    甲数据库提取使用FMDB返回一个FMResultSet。使用该结果集,您可以浏览并创建模型对象。在存储器

    3.Keeping对象

    FMResultSet *的resultSet = [self.database的executeQuery:@ “从some_table选择UNIQUEID”];

    4.WEB的API

    - (void)uploadNote:(VSNote *)note { 
        VSNoteAPICall *apiCall = [[VSNoteAPICall alloc] initWithNote:[note detachedCopy]]; 
        [self enqueueAPICall:apiCall]; 
    } 
    

    5.Handling的Web API返回值

    VSNote *cachedNote = [self.mapTable objectForKey:downloadedNote.uniqueID]; 
    

    6.Database迁移

    [self.database executeUpdate:@"CREATE TABLE if not exists tags " 
        "(uniqueID TEXT UNIQUE, name TEXT, deleted INTEGER, deletedModificationDate DATE);"]; 
    

    我希望,它会帮助你。

    1

    感谢您的支持 我已经找到答案:[database executeUpdate:@“vacuum”];