iOS 使用FMDB进行数据库操作(一)

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

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

      View Row Code

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

      3、创建数据库的操作

      View Row Code

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

      4、创建表

      View Row Code

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、增加表数据

      View Row Code

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、删除数据

      View Row Code

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、查询

      View Row Code

1 +(NSArray*)getAllPeople 
2
3
4 if (!db) { 
5 [selfcreatDatabase]
6
7
8 if (![db open]) { 
9 NSLog(@"数据库打开失败"); 
10 returnnil
11
12
13 [dbsetShouldCacheStatements:YES]
14
15 if(![dbtableExists:@"people"]
16
17 returnnil
18
19
20 //定义一个可变数组,用来存放查询的结果,返回给调用者 
21 NSMutableArray*peopleArray =[[NSMutableArrayalloc]initWithArray:0]
22 //定义一个结果集,存放查询的数据
23 FMResultSet*rs =[dbexecuteQuery:@"select * from people"]
24 //判断结果集中是否有数据,如果有则取出数据
25 while ([rs next]) { 
26 People*aPeople =[[Peoplealloc]init]
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 }

你可能感兴趣的:(数据库,FMDB,沙盒,ios-FMDB)