| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
xg48
10年前发布

iOS 使用FMDB进行数据库操作

  1. 首先要先导入第三方类库FMdatabase。  
  2. 获得存放数据库文件的沙盒地址。 
        +(NSString*)databaseFilePath      [objc] view plaincopy            {                        NSArray*filePath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);            NSString*documentPath=[filePathobjectAtIndex:0];            NSLog(@"%@",filePath);            NSString*dbFilePath=[documentPathstringByAppendingPathComponent:@"db.sqlite"];            returndbFilePath;                        }        3、创建数据库的操作                +(void)creatDatabase            {            db=[[FMDatabasedatabaseWithPath:[selfdatabaseFilePath]]retain];            }        4、创建表                +(void)creatTable            {            //先判断数据库是否存在,如果不存在,创建数据库            if(!db){            [selfcreatDatabase];            }            //判断数据库是否已经打开,如果没有打开,提示失败            if(![dbopen]){            NSLog(@"数据库打开失败");            return;            }                        //为数据库设置缓存,提高查询效率            [dbsetShouldCacheStatements:YES];                        //判断数据库中是否已经存在这个表,如果不存在则创建该表            if(![dbtableExists:@"people"])            {            [dbexecuteUpdate:@"CREATETABLES people(people_id INTEGER PRIMARY KEY AUTOINCREAMENT, nameTEXT, age INTEGER) "];                                    NSLog(@"创建完成");            }                        }        5、增加表数据                +(void)insertPeople:(People*)aPeople            {            if(!db){            [selfcreatDatabase];            }                        if(![dbopen]){            NSLog(@"数据库打开失败");            return;            }                        [dbsetShouldCacheStatements:YES];                        if(![dbtableExists:@"people"])            {            [selfcreatTable];            }            //以上操作与创建表是做的判断逻辑相同            //现在表中查询有没有相同的元素,如果有,做修改操作            FMResultSet*rs=[dbexecuteQuery:@"select* from people where people_id = ?",[NSStringstringWithFormat:@"%d",aPeople.peopleID]];            if([rsnext])            {            NSLog(@"dddddslsdkien");            [dbexecuteUpdate:@"updatepeople set name = ?, age = ? where people_id =1",aPeople.name,[NSStringstringWithFormat:@"%d",aPeople.age]];            }            //向数据库中插入一条数据            else{            [dbexecuteUpdate:@"INSERTINTO people (name, age) VALUES(?,?)",aPeople.name,[NSStringstringWithFormat:@"%d",aPeople.age]];            }                        }        6、删除数据                +(void)deletePeopleByID:(int)ID            {            if(!db){            [selfcreatDatabase];            }                        if(![dbopen]){            NSLog(@"数据库打开失败");            return;            }                        [dbsetShouldCacheStatements:YES];                        //判断表中是否有指定的数据, 如果没有则无删除的必要,直接return            if(![dbtableExists:@"people"])            {            return;            }            //删除操作            [dbexecuteUpdate:@"deletefrom people where people_id = ?", [NSStringstringWithFormat:@"%d",ID]];                        [dbclose];            }        7、修改操作与增加操作的步骤一致                +(NSArray*)getAllPeople            {                        if(!db){            [selfcreatDatabase];            }                        if(![dbopen]){            NSLog(@"数据库打开失败");            returnnil;            }                        [dbsetShouldCacheStatements:YES];                        if(![dbtableExists:@"people"])            {            returnnil;            }                        //定义一个可变数组,用来存放查询的结果,返回给调用者            NSMutableArray*peopleArray=[[NSMutableArrayalloc]initWithArray:0];            //定义一个结果集,存放查询的数据            FMResultSet*rs=[dbexecuteQuery:@"select* from people"];            //判断结果集中是否有数据,如果有则取出数据            while([rsnext]){            People*aPeople=[[Peoplealloc]init];                        aPeople.peopleID=[rsintForColumn:@"people_id"];            aPeople.name=[rsstringForColumn:@"name"];            aPeople.age=[rsintForColumn:@"age"];            //将查询到的数据放入数组中。            [peopleArrayaddObject:aPeople];            }            return[peopleArrayautorelease];            }        8、查询                +(NSArray*)getAllPeople            {                        if(!db){            [selfcreatDatabase];            }                        if(![dbopen]){            NSLog(@"数据库打开失败");            returnnil;            }                        [dbsetShouldCacheStatements:YES];                        if(![dbtableExists:@"people"])            {            returnnil;            }                        //定义一个可变数组,用来存放查询的结果,返回给调用者            NSMutableArray*peopleArray=[[NSMutableArrayalloc]initWithArray:0];            //定义一个结果集,存放查询的数据            FMResultSet*rs=[dbexecuteQuery:@"select* from people"];            //判断结果集中是否有数据,如果有则取出数据            while([rsnext]){            People*aPeople=[[Peoplealloc]init];                        aPeople.peopleID=[rsintForColumn:@"people_id"];            aPeople.name=[rsstringForColumn:@"name"];            aPeople.age=[rsintForColumn:@"age"];            //将查询到的数据放入数组中。            [peopleArrayaddObject:aPeople];            }            return[peopleArrayautorelease];            }