如何执行sql查询,根据查询结果执行操作以及执行更新?

时间:2019-01-02 19:04:25

标签: sql objective-c sqlite fmdb

为简单起见,我有一个URL表及其书签数据。

这是我创建表格,插入记录,从url获取书签和从书签获得url的方式:

- (void)createTableForDatabase:(FMDatabase*)db {
    NSString* createTableSQL = @"CREATE BookmarkURLs (url TEXT, bookmark BLOB)";
    [db executeUpdate:createTableSQL];
}

- (void)insertNewRecordWithURL:(NSURL*)url forDatabase:(FMDatabase*)db {
    NSData* bookmarkData = [self bookmarkForURL:url];
    NSString* insertSQL = @"INSERT INTO BookmarkURLs (url, bookmark) VALUES(?,?)";
    [db executeUpdate:insertSQL withArgumentsInArray:@[url.absoluteString, bookmark]];
    }

- (NSData*)bookmarkForURL:(NSURL*)url {
    return [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope | NSURLBookmarkResolutionWithoutUI
         includingResourceValuesForKeys:nil
                          relativeToURL:nil
                                  error:nil];
}

- (NSURL*)urlForBookmark:(NSData*)bookmark {
    BOOL bookmarkIsStale = NO;
    NSError* theError = nil;
    NSURL* bookmarkURL = [NSURL URLByResolvingBookmarkData:bookmark
                                            options:NSURLBookmarkResolutionWithoutUI
                                            relativeToURL:nil
                                            bookmarkDataIsStale:&bookmarkIsStale
                                            error:&theError];

    if (bookmarkIsStale || (theError != nil)) {
        // Handle any errors
        return nil;
    }
    return bookmarkURL;
}

现在,我不时要遍历所有记录,解析书签,并检查文件是否已重命名/移动并更新URL。为什么这样做是查询所有书签,然后为每个书签解析其URL并更新其记录。我认为这不是最佳解决方案性能。 有一种方法可以通过一个sql执行操作,如何执行?

0 个答案:

没有答案