• iOS:第三方数据库文件FMDB的使用


    第三方数据库FMDB

    •FMDB的使用:在sqlite的基础上,将sqlite中的函数进行封装产生的一个数据库文件。
    –FMDB的好处是对基本C库的封装,方便使用。同时还提供了多线程操作数据库带来的读脏数据等问题的方法。
    –FMDB有三个主要的类

    FMDatabase:对象就代表一个单独的SQLite数据库用来执行SQL语句

    FMResultSet:使用FMDatabase执行查询后的结果集

    FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的
     
     
    对数据库所有的操作只需下面的方法即可:
    查询语句:- (FMResultSet *)executeQuery:(NSString*)sql, ...    

                        - (BOOL)next;

                        -{type}ForColumnIndex:(int)columnIdx

    创建、插入、修改等等语句:- (BOOL)executeUpdate:(NSString*)sql, ...
     

    执行SQL语句:

    <1>使用:(需要FMDatabase *db成员变量)
         创建或打开:FMDataBase类

    self.db = [FMDatabase databaseWithPath:fileName];  //创建数据库

    [self.db open];//打开数据库

    [self.db close]; //关闭数据库

    //对数据库进行插入、修改的操作

    [self.db executeUpdate:@“CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT,age INTEGER)”]; 

    [self.db executeUpdate:@"INSERT INTO t_student(name , age) VALUES(?, ?);", @"xuneng", @(10)];

    [self.db executeUptate:@"update t_student set name = 'lisi' where age = @(10)"]; 

    <2>查询:FMResultSet类(数据取出完全后,不需要再去关闭结果集,当新的结果集产生,或者其数据库关闭时,会自动关闭。)

            // 1.查询

            FMResultSet *set = [self.db  executeQuery:@"SELECT * FROM t_student;"];  //返回结果集

           // 2.取出数据

           while ([set next])

           {      

       // 取出姓名 

            NSString *name = [set stringForColumnIndex:1];

      // 取出年龄    

            int age = [set intForColumnIndex:2];

             NSString *name = [set stringForColumn:@"name"];

             int age = [set intForColumn:@"age"];

             NSLog(@"name = %@, age = %d", name, age);

    }

    创建数据库并进行增删改查的操作举例如下:

    1、首先导入sqlite本地数据库和第三方数据库FMDB

         

     

         

    2、在UIViewController类中对数据库表进行增删该查操作如下:

    《1》数据库路径

        NSArray *dics = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

        NSString *dbPath = [[dics lastObject] stringByAppendingPathComponent:@"user.db"];

    《2》 创建数据库

        self.db = [FMDatabase databaseWithPath:dbPath];

    《3》打开数据库

        if(![self.db open])

        {

               return; //打开数据库失败

        }

     《4》创建数据库表

        if(![self.db executeUpdate:@"create table if not exists user (ID integer primary key autoincrement,name text,password text)"])

        {

            return; //创建数据库表失败

        }

    《5》插入数据

        if(![self.db executeUpdate:@"insert into user (name,password) values('admin','123456')"])

        {

            return; //插入数据失败

        }

    《6》修改数据

        if(![self.db executeUpdate:@"update user set name = 'zhangsan' where ID = 2"])

        {

            return; //修改数据失败

        }

      

    《7》获取结果集

        FMResultSet *resultSet = [self.db executeQuery:@"select * from user"];

    《8》遍历结果集,取出数据

        while ([resultSet next])

        {

            int ID = [resultSet intForColumnIndex:0];

            NSString *name = [resultSet stringForColumnIndex:1];

            NSString *password = [resultSet stringForColumnIndex:2];

            NSLog(@"ID:%d,name:%@,password:%@",ID,name,password);

        }

    《8》//关闭数据库

        [self.db close];

    演示结果如下:

    2015-09-21 21:44:38.640 第三方数据库FMDB[4207:296060] ID:1,name:admin,password:123456
    2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:2,name:zhangsan,password:123456
    2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:3,name:admin,password:123456
    2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:4,name:admin,password:123456
    2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:5,name:admin,password:123456
  • 相关阅读:
    iPhone SDK开发基础之UIPageControl编程
    Ubuntu Linux从初学到精通
    软件架构经验总结
    CMS之图片管理(3)
    如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
    CMS之图片管理(5)
    CMS之图片管理(4)
    iphone4s中cocos2d出现闪屏,花屏的解决方案
    CMS之图片管理(1)
    5 个常用的软件质量指标
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4827381.html
Copyright © 2020-2023  润新知