iOS关于SQLite数据库的操作(使用第三方类库FMDB)

转载 2013年12月03日 19:21:28
  1. 首先要先导入第三方类库FMdatabase

  2. 获得存放数据库文件的沙盒地址
  3. +(NSString *)databaseFilePath
    {
    NSArray *filePath 
    = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [filePath objectAtIndex:0];
    NSLog(@"%@",filePath);
    NSString *dbFilePath = [documentPath stringByAppendingPathComponent:@"db.sqlite"];
    return dbFilePath; 
    }

    1. 创建数据库的操作
    2. +(void)creatDatabase
      {
      db = [[FMDatabase databaseWithPath:[self databaseFilePath]] retain];
      }

    3. 创建表
    4. +(void)creatTable
      {
      //先判断数据库是否存在,如果不存在,创建数据库
      if (!db) {
      [self creatDatabase];
      }
      //判断数据库是否已经打开,如果没有打开,提示失败 
      if (![db open]) {
      NSLog(@"数据库打开失败");
      return;
      }
      
      //为数据库设置缓存,提高查询效率 
      [db setShouldCacheStatements:YES];
       
      //判断数据库中是否已经存在这个表,如果不存在则创建该表
      if(![db tableExists:@"people"])
      {
      [db executeUpdate:@"CREATE TABLES people(people_id INTEGER PRIMARY KEY AUTOINCREAMENT, name TEXT, age INTEGER) "];
       
       
      NSLog(@"创建完成");
      }
       
      }

    5. 增加表数据
    6. +(void)insertPeople:(People *)aPeople
      {
      if (!db) {
      [self creatDatabase];
      }
       
      if (![db open]) {
      NSLog(@"数据库打开失败");
      return;
      }
       
      [db setShouldCacheStatements:YES];
       
      if(![db tableExists:@"people"])
      {
      [self creatTable];
      }
      //以上操作与创建表是做的判断逻辑相同
      //现在表中查询有没有相同的元素,如果有,做修改操作 
      FMResultSet *rs = [db executeQuery:@"select * from people where people_id = ?",[NSString stringWithFormat:@"%d",aPeople.peopleID]];
      if([rs next]) 
      {
      NSLog(@"dddddslsdkien");
      [db executeUpdate:@"update people set name = ?, age = ? where people_id = 1",aPeople.name,[NSString stringWithFormat:@"%d",aPeople.age]];
      }
      //向数据库中插入一条数据 
      else{
      [db executeUpdate:@"INSERT INTO people (name, age) VALUES (?,?)",aPeople.name,[NSString stringWithFormat:@"%d",aPeople.age]];
      }
       
       
      }

    7. 删除数据
    8. +(void)deletePeopleByID:(int)ID
      {
      if (!db) {
      [self creatDatabase];
      }
       
      if (![db open]) {
      NSLog(@"数据库打开失败");
      return;
      }
       
      [db setShouldCacheStatements:YES];
       
      //判断表中是否有指定的数据, 如果没有则无删除的必要,直接return
      if(![db tableExists:@"people"])
      {
      return;
      }
      //删除操作 
      [db executeUpdate:@"delete from people where people_id = ?", [NSString stringWithFormat:@"%d",ID]];
       
      [db close];
      }

    9. 修改操作与增加操作的步骤一致

    10. 查询
    11. +(NSArray *)getAllPeople
      {
       
      if (!db) {
      [self creatDatabase];
      }
       
      if (![db open]) {
      NSLog(@"数据库打开失败");
      return nil;
      }
       
      [db setShouldCacheStatements:YES];
       
      if(![db tableExists:@"people"])
      {
      return nil;
      }
      
      //定义一个可变数组,用来存放查询的结果,返回给调用者 
      NSMutableArray *peopleArray = [[NSMutableArray alloc] initWithArray:0];
      //定义一个结果集,存放查询的数据
      FMResultSet *rs = [db executeQuery:@"select * from people"];
      //判断结果集中是否有数据,如果有则取出数据
      while ([rs next]) {
      People *aPeople = [[People alloc] init];
       
      aPeople.peopleID = [rs intForColumn:@"people_id"];
      aPeople.name = [rs stringForColumn:@"name"];
      aPeople.age = [rs intForColumn:@"age"];
      //将查询到的数据放入数组中。 
      [peopleArray addObject:aPeople];
      }
      return [peopleArray autorelease];
      }
      

      转自:http://www.th7.cn/Program/IOS/201211/110817.shtml

相关文章推荐

iOS关于SQLite数据库的操作(使用第三方类库FMDB)

首先要先导入第三方类库FMdatabase 获得存放数据库文件的沙盒地址 +(NSString *)databaseFilePath { NSArray *filePath = NSSearch...

iOS关于数据库的操作(使用第三方类库FMDB)

首先要先导入第三方类库FMdatabase 获得存放数据库文件的沙盒地址 +(NSString *)databaseFilePath {   NSArray *filePath ...

sqlite第三方类库:FMDB使用

本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发过来,供大家参考 原文地址: 2 NSString *documentDirectory = ...

sqlite第三方类库:FMDB使用(转载)

本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发过来,供大家参考 原文地址: 2 NSString *documentDirectory = ...

sqlite第三方类库:FMDB使用(转载)

本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发过来,供大家参考 原文地址:https://github.com/ccgus/fmdb 更多的使用,大家可以看看source中的...
  • x32sky
  • x32sky
  • 2014年01月15日 23:11
  • 525

Sqlite第三方类库:FMDB使用

本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发过来,供大家参考 原文地址:https://github.com/ccgus/fmdb 更多的使用,大家可以看看source中的R...

sqlite第三方类库:FMDB使用---1

sqlite第三方类库:FMDB使用---1

sqlite第三方类库:FMDB使用

原文地址: 2 NSString *documentDirectory = [paths objectAtIndex:0]; ...

IOS-20-数据库操作之(SQLite第三方封装库FMDB)的基础入门使用及demo源码

前言:苹果IOS操作系统较常用的数据库有两种: 1.CoreData:苹果原生数据库,可视化编辑界面,易于后期不同开发人员维护,接触过Android的SQLite或者Sql语句的开发人员不太适应这种方...
  • IOT_LI
  • IOT_LI
  • 2015年10月23日 16:55
  • 797

使用第三方类库FMDB实现数据持久化

@SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3。在IOS中使用SQLite如果...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS关于SQLite数据库的操作(使用第三方类库FMDB)
举报原因:
原因补充:

(最多只允许输入30个字)