iOS 개발 FMDB

4135 단어
FMDB에는
FMDatabase는 SQL 문을 실행하는 SQLite 데이터베이스를 나타냅니다.FMResultSet은 FMDatase가 질의 문을 실행한 결과를 나타냅니다.FMDatabaseQueue는 다중 루트에서queries나 업데이트를 실행해야 할 때 이 클래스를 사용해야 합니다. 이 클래스는 루트가 안전합니다.
t_student 표시 테이블 이름
데이터 업데이트 Executing UpdatesSELECT가 아닌 모든 문장은 update로 간주되며CREATE、UPDATE、INSERT、ALTER、COMMIT、BEGIN、DETACH、DELETE、DROP、END、EXPLAIN、VACUUM REPLACE 등 문장을 포함한다.기본적으로, 만약 당신의 SQL 문장이 SELECT로 시작하지 않는다면, 바로 update 문장이다.데이터베이스 실행 updates 은 버그 값을 되돌려줍니다. 실행이 실패했을 때 -lastErrorMessage-lastErrorCode 방법으로 오류 정보를 얻을 수 있습니다.
데이터베이스 만들기
//1.          
_docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"%@",_docPath);
mark_student = 1;
//       
NSString *fileName = [_docPath stringByAppendingPathComponent:@"     .sqlite"];
//2.     
 _db = [FMDatabase databaseWithPath:fileName];
if ([_db open]) {
    NSLog(@"       ");
} else {
    NSLog(@"       ");
}

테이블 생성
//3.   
BOOL result = [_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student(   ) (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL, sex text NOT NULL);"];
if (result) {  
  NSLog(@"     ");
} else {
  NSLog(@"     ");
}

필드에 제약조건을 추가할 수 있습니다.
  • 키: primary 키.메인 키의 값은 반드시 유일해야 하며, 예를 들어 학생의 학번을 표시하는 데 사용된다.메인 키는 인덱스이기도 하여 메인 키를 통해 기록 속도가 비교적 빠르다.메인 키가 정수 형식이면 이 열의 값이 자동으로 증가할 수 있습니다.
  • 자증: autoincrement
  • 비어 있지 않음: Not Null.필드 값은 비워둘 수 없습니다. 그렇지 않으면 오류가 발생합니다.
  • 유일: Unique.이 필드의 값을 유일하게 제한합니다.기본 키는 고유합니다.
  • 조건 검사: Check.이 필드의 값은 조건에 부합되어야 저장할 수 있습니다.
  • 기본값: Default.

  • 데이터 삽입(업데이트 데이터로 이해할 수도 있음)
    //1.executeUpdate:       ?   (       oc  ,;      )
    BOOL result = [_db executeUpdate:@"INSERT INTO t_student(  ) (name, age, sex) VALUES (?,?,?)",name,@(age),sex];
    //2.executeUpdateWithForamat:       %@,%d     (         ,          )
        BOOL result = [_db executeUpdateWithFormat:@"insert into t_student(  ) (name,age, sex) values (%@,%i,%@)",name,age,sex];
    //3.          
        BOOL result = [_db executeUpdate:@"INSERT INTO t_student(  )(name,age,sex) VALUES  (?,?,?);" withArgumentsInArray:@[name,@(age),sex]];
    if (result) {
        NSLog(@"    ");
    } else {
        NSLog(@"    ");
    }
    

    데이터 삭제,
    //1.       ?    (       oc  ,   int   OC  )
    int idNum = 11;
    BOOL result = [_db executeUpdate:@"delete from t_student where id = ?",@(idNum)];
    //2.       %@,%d    
    //BOOL result = [_db executeUpdateWithFormat:@"delete from t_student where name = %@",@"   "];
    if (result) {
        NSLog(@"    ");
    } else {
        NSLog(@"    ");
    }
    

    데이터 수정
    //       
    NSString *newName = @"   ";
    NSString *oldName = @"   2";
    BOOL result = [_db executeUpdate:@"update t_student set name = ? where name = ?",newName,oldName];
    if (result) {
      NSLog(@"    ");
    } else {
      NSLog(@"    ");
    }
    
    

    데이터 조회
    //     
    FMResultSet * resultSet = [_db executeQuery:@"select * from t_student"];
    //      
    //FMResultSet * resultSet = [_db executeQuery:@"select * from t_student where id < ?", @(4)];
    //      
    while ([resultSet next]) {
         int idNum = [resultSet intForColumn:@"id"];
         NSString *name = [resultSet objectForColumnName:@"name"];
         int age = [resultSet intForColumn:@"age"];
         NSString *sex = [resultSet objectForColumnName:@"sex"];
         NSLog(@"  :%@   :%@   :%@   :%@",@(idNum),name,@(age),sex);
    }
    
    

    테이블 삭제
    //          
    BOOL result = [_db executeUpdate:@"drop table if exists t_student"];
    if (result) {
      NSLog(@"     ");
    } else {
      NSLog(@"     ");
    }
    
    

    데이터베이스 닫기
    BOOL result = [db close];
    if(result){
    NSLog(@"       ");
    }
    else {
    NSLog(@"       ");
    }
    

    좋은 웹페이지 즐겨찾기