iOS 使用FMDB进行数据库操作

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
  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];  
            }  


标签: 数据库

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:python判断远程端口是否打开

下一篇:Android获取应用程序下所有Activity