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 }
 
 
posted @ 2015-10-20 12:02  超越昨天  阅读(149)  评论(0编辑  收藏  举报