sql 의 FMDB 데이터 저장 사고방식 (웨 이 보 를 예 로 들 면)

1986 단어
기본 적 인 사 고 는 다음 과 같다. 데이터 저장 작업 을 하나의 도구 류 에 밀봉 한 다음 에 저장 과 추출 방법 을 제공 하고 사용 할 때 호출 하면 다음 에 웨 이 보 를 예 로 들 어 간단 한 설명 을 할 수 있다.
  • 1. 도구 류 의 + (void) initialize;방법 중 데이터베이스 초기 화 및 열기 및 생 성 표 등
  • static FMDatabase *_db;
    
    + (void)initialize{
        //1, open FMDSB database
        _db = [FMDatabase databaseWithPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"statuses.sqlite"]];
        [_db open];
        
        //2,create table, blob       , NSData
        [_db executeUpdate:@"create table if not exists t_statuses (id integer PRIMARY KEY, status blob, idstr text)"];
    }
    
  • 2. 데이터 저장 방법 을 제공 하려 면. h 파일 에서 외부 호출 에 누설 되 었 음 을 밝 혀 야 합 니 다
  • 즉, 네가 나 에 게 배열 의 데 이 터 를 주 었 고 나 는 data 로 전환 한 후에 해당 하 는 표 에 직접 저장 했다
  • .
    + (void)saveStatuses:(NSArray *)statuses{
        for (NSDictionary *status in statuses) {
            NSData *statusData = [NSKeyedArchiver archivedDataWithRootObject:status];
            [_db executeUpdateWithFormat:@"insert into t_statuses (status, idstr) values (%@, %@);", statusData, status[@"idstr"]];
        }
    }
    
    
  • 3. 배열 읽 기 방법 을 제공 합 니 다. h 파일 에서 외부 호출 에 대한 설명 이 필요 합 니 다
  • 본 사례 는 가장 간단 한 데이터 저장 방법 만 제공 하고 웨 이 보 의 실제 데이터 저장 방법 에서 들 어 오 는 idstr 에 따라 서로 다른 읽 기 작업 을 해 야 할 수도 있다.저 는 기본적으로 idstr 순서대로 최신 10 개의 데 이 터 를 읽 습 니 다
  • .
    + (NSArray *)statusesWithParams:(NSDictionary *)param{//       idstr       ,              
        FMResultSet *result = [_db executeQuery:@"select * from t_statuses order by idstr desc limit 10"];
        NSMutableArray *statusArray = [NSMutableArray array];
        while (result.next) {
            //  data    
            NSData *statusData = [result objectForColumnName:@"status"];
            NSDictionary *status = [NSKeyedUnarchiver unarchiveObjectWithData:statusData];
            
            [statusArray addObject:status];
        }
        return statusArray;
    }
    

    좋은 웹페이지 즐겨찾기