iOS FMDB

    由于为了提高用户体验,越来越多的 App 都做了缓存这项功能,做缓存的方式有很多,今天就简单介绍下三方的数据库, FMDB

首先我们需要导入libsqlite3.0.tbd

下面进行数据库的增,删,改,查

#import "ViewController.h"

#import "FMDatabase.h"


@interface ViewController ()


@property(nonatomic,retain)FMDatabase *db;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.



    [self openDB];

    //插入数据

    [self insertData:@"张三" detail:@"不错"];

//    [self deleteData:@"张三"];

    [self updateData:@"李四" detail:@"很好" oldTitle:@"张三"];


    [self selectData];

    [self dropTable];

    //6.关闭数据库

    [self.db close];

}

-(void)openDB

{

    //导入sqlite框架,导入FMDB文件夹


    //1.获得数据库文件的路径

    NSString *doc=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    NSString *fileName=[doc stringByAppendingPathComponent:@"student.sqlite"];

    NSLog(@"fileName = %@",fileName);


    //2.获得数据库

    self.db = [FMDatabase databaseWithPath:fileName];


    //3.打开数据库

    if ([self.db open]) {

        NSLog(@"ok");


        //4.创表

        BOOL result=[self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS lanou3g (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, detail TEXT NOT NULL);"];


        if (result) {

            NSLog(@"创表成功");

        }else{

            NSLog(@"创表失败");

        }

    }

}




#pragma mark 插入数据

-(void)insertData:(NSString *)title detail:(NSString *)detail

{

    //如果用stringWithFormat,sql语句中可以用'%@'

    NSString *sql = [NSString stringWithFormat:@"INSERT INTO lanou3g (title, detail) VALUES ('%@', '%@')",title,detail];


    BOOL result = [self.db executeUpdate:sql];

    if (result) {


        NSLog(@"插入成功");


    }else

    {

        NSLog(@"插入成功");


    }


}


#pragma mark 删除数据

-(void)deleteData:(NSString *)title

{


    NSString *deleteSql = [NSString stringWithFormat:

                           @"DELETE FROM lanou3g WHERE title = '%@'",title];

    BOOL res = [self.db executeUpdate:deleteSql];


    if (res) {

        NSLog(@"删除成功");

    } else {

        NSLog(@"删除失败");

    }

}


#pragma mark 销毁表格

-(void)dropTable

{

    [self.db executeUpdate:@"DROP TABLE IF EXISTS lanou3g"];


    //4.创表

    BOOL result=[self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS lanou3g (id integer PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, detail TEXT NOT NULL)"];


    if (result) {

        NSLog(@"再次创表成功");

    }else{

        NSLog(@"再次创表失败");

    }

}



//需要注意

//a.  executeUpdate : 不确定的参数用?来占位 (后面参数必须都是oc对象)

//    [self.db executeUpdate:@"delete from t_student where id=?;",@(idNum)];


//b.  executeUpdateWithFormat : 不确定的参数用%@%d等来占位

//    [self.db executeUpdateWithFormat:@"delete from t_student where name=%@;",@"apple9_name"];


#pragma mark 修改数据

-(void)updateData:(NSString *)title detail:(NSString*)detail oldTitle:(NSString *)oldTitle

{


    //也可以这样

    //    NSString *sql = [NSString stringWithFormat:@"UPDATE lanou3g SET title = '%@', detail = '%@' WHERE title = '%@'", title, detail, oldTitle];

    //    BOOL result =[self.db executeUpdate:sql];

    //下面的不行,不好用

    //  BOOL result = [self.db executeUpdateWithFormat:@"UPDATE lanou3g SET title = '%@', detail = '%@' WHERE title = '%@'", title, detail, oldTitle];



    BOOL result =[self.db executeUpdate:@"UPDATE lanou3g SET title = ?, detail = ? WHERE title = ?", title, detail, oldTitle];

    if (result) {

        NSLog(@"修改成功");

    }else

    {

        NSLog(@"修改失败");

    }


}


#pragma mark 查询数据

-(void)selectData

{

    //1.执行查询语句

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


    //2.遍历结果集合

    while ([resultSet next]) {


        int idNum = [resultSet intForColumn:@"id"];

        NSString *title = [resultSet objectForColumnName:@"title"];

        NSString *detail = [resultSet objectForColumnName:@"detail"];

        NSLog(@"id=%i ,title=%@, detail=%@",idNum,title,detail);

    }

    

}



@end

到这里关于 FMDB 简单的功能就都能实现了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值