zoukankan      html  css  js  c++  java
  • FMDB使用

    1、首先要先导入第三方类库FMdatabase。

    2、获得存放数据库文件的沙盒地址。

     
    1 +(NSString *)databaseFilePath 
    2
    3  
    4 NSArray *filePath NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    5 NSString *documentPath [filePath objectAtIndex:0]; 
    6 NSLog(@"%@",filePath); 
    7 NSString *dbFilePath [documentPath stringByAppendingPathComponent:@"db.sqlite"]; 
    8 return dbFilePath; 
    9  
    10 }

    3、创建数据库的操作

     
    1 +(void)creatDatabase 
    2
    3 db [[FMDatabasedatabaseWithPath:[selfdatabaseFilePath]retain]; 
    4 }

    4、创建表

     
    1 +(void)creatTable 
    2
    3 //先判断数据库是否存在,如果不存在,创建数据库 
    4 if (!db) { 
    5 [selfcreatDatabase]; 
    6
    7 //判断数据库是否已经打开,如果没有打开,提示失败 
    8 if (![db open]) { 
    9 NSLog(@"数据库打开失败"); 
    10 return; 
    11
    12  
    13 //为数据库设置缓存,提高查询效率 
    14 [dbsetShouldCacheStatements:YES]; 
    15  
    16 //判断数据库中是否已经存在这个表,如果不存在则创建该表 
    17 if(![dbtableExists:@"people"]) 
    18
    19 [db executeUpdate:@"CREATE TABLES people(people_id INTEGER PRIMARY KEY AUTOINCREAMENT, name TEXT, age INTEGER) "]; 
    20  
    21  
    22 NSLog(@"创建完成"); 
    23
    24  
    25 }

    5、增加表数据

     
    1 +(void)insertPeople:(People *)aPeople 
    2
    3 if (!db) { 
    4 [selfcreatDatabase]; 
    5
    6  
    7 if (![db open]) { 
    8 NSLog(@"数据库打开失败"); 
    9 return; 
    10
    11  
    12 [dbsetShouldCacheStatements:YES]; 
    13  
    14 if(![dbtableExists:@"people"]) 
    15
    16 [selfcreatTable]; 
    17
    18 //以上操作与创建表是做的判断逻辑相同 
    19 //现在表中查询有没有相同的元素,如果有,做修改操作 
    20 FMResultSet *rs [dbexecuteQuery:@"select * from people where people_id = ?",[NSStringstringWithFormat:@"%d",aPeople.peopleID]]; 
    21 if([rs next]) 
    22
    23 NSLog(@"dddddslsdkien"); 
    24 [dbexecuteUpdate:@"update people set name = ?, age = ? where people_id = 1",aPeople.name,[NSStringstringWithFormat:@"%d",aPeople.age]]; 
    25
    26 //向数据库中插入一条数据 
    27 else{ 
    28 [dbexecuteUpdate:@"INSERT INTO people (name, age) VALUES (?,?)",aPeople.name,[NSStringstringWithFormat:@"%d",aPeople.age]]; 
    29
    30  
    31 }

    6、删除数据

     
    1 +(void)deletePeopleByID:(int)ID 
    2
    3 if (!db) { 
    4 [selfcreatDatabase]; 
    5
    6  
    7 if (![db open]) { 
    8 NSLog(@"数据库打开失败"); 
    9 return; 
    10
    11  
    12 [dbsetShouldCacheStatements:YES]; 
    13  
    14 //判断表中是否有指定的数据, 如果没有则无删除的必要,直接return 
    15 if(![dbtableExists:@"people"]) 
    16
    17 return; 
    18
    19 //删除操作 
    20 [db executeUpdate:@"delete from people where people_id = ?", [NSStringstringWithFormat:@"%d",ID]]; 
    21  
    22 [db close]; 
    23 }

    7、修改操作与增加操作的步骤一致

    8、查询

     
    1 +(NSArray *)getAllPeople 
    2
    3  
    4 if (!db) { 
    5 [selfcreatDatabase]; 
    6
    7  
    8 if (![db open]) { 
    9 NSLog(@"数据库打开失败"); 
    10 return nil; 
    11
    12  
    13 [dbsetShouldCacheStatements:YES]; 
    14  
    15 if(![dbtableExists:@"people"]) 
    16
    17 return nil; 
    18
    19  
    20 //定义一个可变数组,用来存放查询的结果,返回给调用者 
    21 NSMutableArray *peopleArray [[NSMutableArrayallocinitWithArray:0]; 
    22 //定义一个结果集,存放查询的数据 
    23 FMResultSet *rs [dbexecuteQuery:@"select * from people"]; 
    24 //判断结果集中是否有数据,如果有则取出数据 
    25 while ([rs next]) { 
    26 People *aPeople [[People allocinit]; 
    27  
    28 aPeople.peopleID [rs intForColumn:@"people_id"]; 
    29 aPeople.name [rs stringForColumn:@"name"]; 
    30 aPeople.age [rs intForColumn:@"age"]; 
    31 //将查询到的数据放入数组中。 
    32 [peopleArray addObject:aPeople]; 
    33
    34 return [peopleArray autorelease]; 
    35 }
     
  • 相关阅读:
    DPDK安装方法 17.12.13
    numa.h:No such file or directory 解决方法
    17秋 软件工程 第六次作业 Beta冲刺 Scrum3
    17秋 软件工程 第六次作业 Beta冲刺 总结博客
    17秋 软件工程 第六次作业 Beta冲刺 Scrum2
    Paper Reviews and Presentations
    17秋 软件工程 第六次作业 Beta冲刺 Scrum1
    17秋 软件工程 第六次作业 Beta冲刺
    error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/share': Operation not permitted
    17秋 软件工程 个人作业 软件产品案例分析
  • 原文地址:https://www.cnblogs.com/xvewuzhijing/p/4894391.html
Copyright © 2011-2022 走看看