zoukankan      html  css  js  c++  java
  • FMDB对sqlite的操作

    1. 首先要先导入第三方类库FMdatabase
    2. 获得存放数据库文件的沙盒地址

      +(NSString *)databaseFilePath

      {

       

      NSArray  *filePath = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory NSUserDomainMask YES );
      NSString *documentPath = [filePath  objectAtIndex: 0];
      NSLog( @"%@",filePath);
      NSString *dbFilePath = [documentPath  stringByAppendingPathComponent: @"db.sqlite"];
      return dbFilePath; 

       

      }

    3. 创建数据库的操作

      +(void)creatDatabase

      {

      db  = [[ FMDatabasedatabaseWithPath :[ selfdatabaseFilePath ]]  retain ];

      }

    4. 创建表

      +(void)creatTable

      {

      //先判断数据库是否存在,如果不存在,创建数据库
      if (! db) {
      [ selfcreatDatabase ];
      }
      //判断数据库是否已经打开,如果没有打开,提示失败 
      if (![ db  open]) {
      NSLog (@" 数据库打开失败" );
      return ;
      }

      //为数据库设置缓存,提高查询效率 
      [ dbsetShouldCacheStatements : YES ];
       
      //判断数据库中是否已经存在这个表,如果不存在则创建该表
      if (![ dbtableExists : @"people" ])
      {
      [ db  executeUpdate :@"CREATE TABLES people(people_id INTEGER PRIMARY KEY AUTOINCREAMENT, name TEXT, age INTEGER) " ];
       
       
      NSLog (@" 创建完成" );
      }

       

      }

    5. 增加表数据

      +(void)insertPeople:(People *)aPeople

      {

      if (! db) {
      [ selfcreatDatabase ];
      }
       
      if (![ db  open]) {
      NSLog (@" 数据库打开失败" );
      return ;
      }
       
      [ dbsetShouldCacheStatements : YES ];
       
      if (![ dbtableExists : @"people" ])
      {
      [ selfcreatTable ];
      }
      //以上操作与创建表是做的判断逻辑相同
      //现在表中查询有没有相同的元素,如果有,做修改操作 
      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 ]];
      }

       

       

      }

    6. 删除数据

      +(void)deletePeopleByID:(int)ID

      {

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

      }

    7. 修改操作与增加操作的步骤一致
    8. 查询

      +(NSArray *)getAllPeople

      {

       
      if (! db) {
      [ selfcreatDatabase ];
      }
       
      if (![ db  open]) {
      NSLog (@" 数据库打开失败" );
      return nil ;
      }
       
      [ dbsetShouldCacheStatements : YES ];
       
      if (![ dbtableExists : @"people" ])
      {
      return nil ;
      }

      //定义一个可变数组,用来存放查询的结果,返回给调用者 
      NSMutableArray  *peopleArray = [[NSMutableArray alloc initWithArray : 0 ];
      //定义一个结果集,存放查询的数据
      FMResultSet  *rs = [ db executeQuery :@"select * from people" ];
      //判断结果集中是否有数据,如果有则取出数据
      while ([rs  next]) {
      People *aPeople = [[ People  allocinit];
       
      aPeople. peopleID = [rs  intForColumn: @"people_id"];
      aPeople. name = [rs  stringForColumn: @"name"];
      aPeople. age = [rs  intForColumn: @"age"];
      //将查询到的数据放入数组中。 
      [peopleArray  addObject:aPeople];
      }
      return [peopleArray  autorelease];

      }

  • 相关阅读:
    Windows 下安装 Python + Django
    asp.net core 一个中小型项目实战的起手式——Swagger配置
    asp.net core 一个中小型项目实战的起手式——项目搭建与仓储模式下的持久层创建(1)
    c#一些常用知识点
    ADO.NET中的5个主要对象
    JavaScript的闭包特性如何给循环中的对象添加事件(一)
    在什么情况下会用到虚方法?它与接口有什么不同?
    一般处理程序Session
    什么是code-Behind技术?
    什么是事务?
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3067712.html
Copyright © 2011-2022 走看看