数据库FMDB初探

网上随便下分DEMO,把FMDB框架下载下来,导入libsqlite3.tbd动态库文件。

NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
    NSString *path = [document stringByAppendingPathComponent:@"Student.sqlite"];
    NSLog(@"%@",path);
    self.paths = path;
    //注意以上三句话是获取数据库路径必不可少的,在viewDidload之前就已经准备好了

创建数据表

- (void)createTable{
    NSFileManager *fileManager=[NSFileManager defaultManager];
    if (![fileManager fileExistsAtPath:self.paths]) {
        NSLog(@"表不存在,创建表");
        FMDatabase *db=[FMDatabase databaseWithPath:self.paths];
        if ([db open]) {
             NSString *sql = @"CREATE TABLE 'Student'('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'name' VARCHAR(20),'age' VARCHAR(20),'idcode' VARCHAR(30),'sex' VARCHAR(20))    ";//sql语句
            BOOL success = [db executeUpdate:sql];
            if (!success) {
                NSLog(@"error when create table ");
            }else{
                NSLog(@"create table succeed");
            }

             [db close];
        }
        else{
             NSLog(@"database open error");
        }
    }
    
}

获取表数据

/**
 *   @author aiqing, 17-11-20 11:11:23
 *
 *   //从数据库中获得所有数据
 */
- (void)getAllDatabase
{
    FMDatabase *db = [FMDatabase databaseWithPath:self.paths];
    if ([db open]) {
        NSString *sql = @"SELECT * FROM Student";
        FMResultSet *rs = [db executeQuery:sql];
        while ([rs next]) {
            NSString *name = [rs stringForColumn:@"name"];
            NSString *age = [rs stringForColumn:@"age"];
            NSString *ID = [rs stringForColumn:@"idcode"];
            NSString *sex=[rs stringForColumn:@"sex"];
            [self.nameArray addObject:name];
            [self.ageArray addObject:age];
            [self.IDArray addObject:ID];
            [self.sexArray addObject:sex];
        }
        [[AQDataFromDataBase shareFromDataBase].nameArrayFromClass arrayByAddingObjectsFromArray:self.nameArray];
        NSLog(@"self.nameArray==%@",self.nameArray);
        [db close];
        [self.tableView reloadData];
    }
    
}

添加东西到数据库

- (void)addNewUserInfo
{
FMDatabase *db = [[FMDatabase alloc]initWithPath:self.dbPath];
    //打开数据库表
    if ([db open]) {
        if (_nameTextField.text.length == 0||_ageTextField.text.length == 0||_IDTextField.text.length == 0||_sexTextField.text.length==0){
            
            [XFNotices noticesWithTitle:@"请完成填写信息" Time:1.5 View:self.view Style:(XFNoticesStyleFail)];
        }else{
            NSLog(@"姓名==%@,年龄==%@,ID==%@,sex==%@",_nameTextField.text,_ageTextField.text,_IDTextField.text, _sexTextField.text);
            NSString *sql= nil;
            if (self.operateType == 0){//执行插入操作
                sql = @"INSERT INTO Student (name,age,idcode,sex) VALUES (?,?,?,?) ";
            }else if(_operateType == 1)//执行更新操作
            {
                sql = @"UPDATE Student  SET name = ? , age = ?,sex=? where idcode = ?";
                
            }
            
            BOOL res = [db executeUpdate:sql,_nameTextField.text,_ageTextField.text,_IDTextField.text,_sexTextField.text];
            if (!res) {
                [XFNotices noticesWithTitle:@"数据插入错误" Time:1.5 View:self.view Style:(XFNoticesStyleFail)];
            }else{
                [XFNotices noticesWithTitle:@"数据插入成功" Time:1.5 View:self.view Style:(XFNoticesStyleFail)];
            }
        }
    }else{
        NSLog(@"数据库打开失败") ;
    }
    if (operateType1 == 0)//如果是添加就留在该页,如果是修改就跳回上一页
    {
        [_nameTextField resignFirstResponder];
        [_ageTextField resignFirstResponder];
        [_IDTextField resignFirstResponder];
        [_sexTextField resignFirstResponder];
        _nameTextField.text = @"";
        _ageTextField.text = @"";
        _IDTextField.text = @"";
        _sexTextField.text=@"";
        [self.navigationController popViewControllerAnimated:YES];
    }
    [db close];

}


你可能感兴趣的:(数据库FMDB初探)