- +(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];
- }
来源: http://www.phpxs.com/code/1005621/