ios FMDB初体验之增删改查

又又好久没见了。想你们。今天写一篇关于fmdb的使用文章。在工作中,我们有时会用到数据库,所以你会需要一个好用的工具。长话短说开始进入正题。

先导入fmdb库文件。还有就是加入libsqlite3.dylib。这2个前期准备好后,我们就可以开工了。

#import "ViewController.h"
#import "FMDB.h"  //导入头文件
@interface ViewController ()

@property(nonatomic,retain) FMDatabaseQueue *fmQueue;//添加一个队列属性

@end

@implementation ViewController

//你数据库的路径
-(FMDatabaseQueue *)fmQueue
{

    if (_fmQueue== nil) {
        NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/student.sqlite"];

        _fmQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath];

        NSLog(@"%@",dbPath);
    }

    return _fmQueue;

}

- (void)viewDidLoad {
    [super viewDidLoad];

    [self createAllBtn];

    //这是在一个代码块中
    [self.fmQueue inDatabase:^(FMDatabase *db) {

        //创建一个表
     [db executeUpdate:@"create table if not exists t_student (id integer primary key autoincrement, name text not null, age integer)"];
        //保持数据库开启
        if (![db open]) {

            return ;
        }
    }];

}

-(void)createAllBtn
{

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];

    btn.frame = CGRectMake(100, 50, 100, 50);
    [btn setTitle:@"增加数据" forState:UIControlStateNormal];

    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(increaseAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];

    UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeSystem];

    btn1.frame = CGRectMake(100, 100, 100, 50);
    [btn1 setTitle:@"删除数据" forState:UIControlStateNormal];

    [btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn1 addTarget:self action:@selector(deleteAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn1];

    UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeSystem];

    btn2.frame = CGRectMake(100, 150, 100, 50);
    [btn2 setTitle:@"修改数据" forState:UIControlStateNormal];

    [btn2 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn2 addTarget:self action:@selector(modifyAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn2];

    UIButton *btn3 = [UIButton buttonWithType:UIButtonTypeSystem];

    btn3.frame = CGRectMake(100, 200, 100, 50);
    [btn3 setTitle:@"查询数据" forState:UIControlStateNormal];

    [btn3 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn3 addTarget:self action:@selector(searchAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn3];

}

-(void)increaseAction:(UIButton *)btn
{

    NSLog(@"增加数据");

    [self.fmQueue inDatabase:^(FMDatabase *db) {

        for (int i = 0; i<100; i++) {

            NSString *name = [NSString stringWithFormat:@"james"];

            int age = 10;

            [db executeUpdate:@"insert into t_student (name,age) values (?,?)",name,[NSNumber numberWithInt:age]];

        }

    }];

}

-(void)deleteAction:(UIButton *)btn
{

    NSLog(@"删除数据");

    [self.fmQueue inDatabase:^(FMDatabase *db) {

        NSString *name = [NSString stringWithFormat:@"james"];

        //注意下这样是不能删除指定数据的,一定要是字符串nsstring类型
        //[db executeUpdate:@"delete from t_student where name = '%@'",name];
        //也就是这样
        NSString *sql = [NSString stringWithFormat:@"delete from t_student where name = '%@'",name];
        [db executeUpdate:sql];

    }];

}

-(void)modifyAction:(UIButton *)btn
{

    NSLog(@"修改数据");

    [self.fmQueue inDatabase:^(FMDatabase *db) {
        NSString *name = [NSString stringWithFormat:@"wq"];

        NSString *set = [NSString stringWithFormat:@"UPDATE  t_student SET name = '%@'",name];
        [db executeUpdate:set];

    }];

}

-(void)searchAction:(UIButton *)btn
{

    NSLog(@"查询数据");

[self.fmQueue inDatabase:^(FMDatabase *db) {

    NSString *sql = [NSString stringWithFormat:@"SELECT *from t_student"];
    FMResultSet *set = [db executeQuery:sql];

    while ([set next])
    {
        int stuId = [set intForColumn:@"id"];
        NSString *name = [set stringForColumn:@"name"];
        int age = [set intForColumn:@"age"];

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

        //这里的textview用于显示查询到的数据
        UITextView *text = [[UITextView alloc]init];
        text.frame = CGRectMake(50, 300, 300, 200);
        text.backgroundColor = [UIColor grayColor];

        [text setText:name];
        [self.view addSubview:text];

    }

}];

}

@end

没错就是这样,很简单,大家可以拉到工程中运行下。

时间: 2024-10-17 06:52:37

ios FMDB初体验之增删改查的相关文章

IOS使用FMDB封装的数据库增删改查操作

// //  DBHelper.h //  LessonStoryBoard // //  Created by 袁冬冬 on 15/10/29. //  Copyright (c) 2015年 袁冬冬. All rights reserved. // #import <Foundation/Foundation.h> #import "FMDB.h" @interface DBHelper : NSObject @property (nonatomic, strong) 

iOS开发之数据库:增删改查

如何导入数据库? 首先要链接库,点击工程??选择Build Phases 下方有个Link Binary,点+ 搜索sqlite,选择libsqlite3.tbd ranh

iOS开发之数据库:增删改查之改、删

//修改学生数据 func updateStudents(){ //准备sql语句 let string:NSString = "update Student set score = 100 where name like 'a%'" let sql = string.UTF8String //执行sql语句 if sqlite3_exec(db, sql, nil, nil, nil) != SQLITE_OK { sqlite3_close(db) print("upda

iOS使用sqlite3原生语法进行增删改查以及FMDB的使用

转载自:http://www.cnblogs.com/Steak/p/3802508.html 首先要导入libsqlite3.dylib并且加入头文件#import <sqlite3.h>,在进行增删改查之前还要先把数据库搞进去. 一种方法是从外面拷贝到程序里:http://www.cnblogs.com/Steak/p/3764395.html 另一种方法就是直接创建表,既然是操纵数据库,那么一定有一个数据库对象,sqlite是C库,所以需要一个C变量: 1 @interface DBHa

iOS sqlite 增删改查 简单封装(基于 FMDB)

/** *  对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * *  基于 FMDB * *  操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整体进行操作 * *  根据 model 对象自动建表,字段类型只支持 NSString , NSIteger , float * *  用到 runtime 运行时获取 model 属性 * */ 1 // 2 // AGDatabaseManager.h 3 // 4 // Created by

IOS开发中使用CNContact对通讯录增删改查

IOS开发中使用CNContact对通讯录增删改查 首先当然是把CNcontact包含在工程中: 1 @import Contacts; 1.下面是增加联系人的程序段: 1 CNMutableContact * contact = [[CNMutableContact alloc]init]; 2 contact.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"22"]); 3 //设置名字 4 contact.gi

FMDB的简单介绍,和数据库增删改查的使用

#import <Foundation/Foundation.h> #import "Book.h" #import "FMDatabase.h" @interface FMDBBookHandle : NSObject +(instancetype)sharedFMDB; //创建增删改查单例 -(void)insertBook:(Book *)book; -(void)deleteBook:(Book *)book; -(void)updateBoo

IOS之分析网易新闻存储数据(CoreData的使用,增删改查)

用过网易新闻客户端的朋友们都知道,获取新闻列表时有的时候他会请求网络有时候不会,查看某条新闻的时候再返回会标注已经查看的效果,接下来分析一下是如何实现的. 首先: 1.网易新闻用CoreData存储了新闻列表,因为我打开网易新闻的Documents时看到了三个文件: newsapp.sqlite,newsapp.sqlite-shm,newsapp.sqlite-wal:这三个文件是你在用CoreData时自动生成的.所以我确定他是用coredata存储的数据而不是sqlite数据库.(Core

ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接

这里是只是代码,因为博客插入图片效果不是很好,我自己写的总结比较详细,有兴趣的朋友可以在评论里留下邮箱,我收到后会发给大家. 转载注明出处,重视原创者的劳动成果,谢谢! - (void)viewDidLoad { [super viewDidLoad]; [self _creatTable];//插入数据 //    [self _query];// 查询数据 // KVC很霸道,即使readonly通过kvc也可赋值,kvo精华 //    Book * book = [[Book alloc