UIday2001:FMDB使用

来源:互联网 发布:淘宝考研资料靠谱店铺 编辑:程序博客网 时间:2024/06/10 11:05


首先需要引入libsqlite3.dylib  引入方法:Build Phases ---- Link Binary With Libraries ---- ' + '

然后将FMDB包拖入工程


ViewController.h

#import <UIKit/UIKit.h>#import "FMDatabase.h"#import "FMDatabaseQueue.h"@interface ViewController : UIViewController{    FMDatabase * db;    NSString * database_path;}@end


ViewController.m

#import "ViewController.h"#define NAME @"c_name"#define TEL @"c_tel"#define ID @"c_id"#define PCOUNT @"c_personCount"#define ADDRESS @"c_address"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.    //创建数据库文件    NSString * s = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];    database_path = [s stringByAppendingPathComponent:@"fmdbDemo"];    NSLog(@"filePath = %@",database_path);    db = [FMDatabase databaseWithPath:database_path];}//创建表- (IBAction)createTabel:(id)sender {    if ([db open]) {        //准备sql语句        NSString * createSql = [NSString stringWithFormat:@"create table if not exists company(c_id integer primary key autoincrement,c_name text,c_tel integer,c_personCount integer,c_address text)"];        //执行语句并返回结果        BOOL result = [db executeUpdate:createSql];        //根据返回结果打印        if (result) {            NSLog(@"创建表成功");            //            NSLog(@"创建表失败");        }else{            NSLog(@"创建表失败");            //            NSLog(@"创建表成功");        }        [db close];    }}//插入数据- (IBAction)insert:(id)sender {    if ([db open]) {        //准备sql语句        NSString * sqlInsert = [NSString stringWithFormat:@"insert into company(c_name,c_tel,c_personCount,c_address)values('tengxun',110,100,'北京'),('alibaba',112,200,'杭州'),('baidu',119,150,'山西'),('jingdong',120,110,'上海'),('苏宁',108,201,'河北'),('guomei',210,220,'天津'),('蓝鸥',180,220,'清河'),('东软',210,880,'河南'),('中国中铁',199,330,'湖北'),('中国核电',155,760,'四川')"];                //执行语句并返回结果        BOOL result = [db executeUpdate:sqlInsert];        if (result) {            NSLog(@"数据插入成功");        }else{            NSLog(@"数据插入失败");        }                //        [sender ifResult:result sqlStr:sqlInsert];                [db close];    }    }////修改数据- (IBAction)update:(id)sender {    if ([db open]) {        //准备sql语句        NSString * sqlUpdate = [NSString stringWithFormat:@"update company set c_tel = '110' where c_personCount < 110"];                //执行语句并返回结果        BOOL result = [db executeUpdate:sqlUpdate];        if (result) {            NSLog(@"数据修改成功");        }else{            NSLog(@"数据修改失败");        }        [db close];    }    }//删除数据- (IBAction)delete:(id)sender {    if ([db open]) {        //准备sql语句        NSString * sqlDelete = [NSString stringWithFormat:@"delete from company where c_id in (3,6,9)"];                BOOL result = [db executeUpdate:sqlDelete];        if (result) {            NSLog(@"数据删除成功");        }else{            NSLog(@"数据删除失败");        }        [db close];    }}//查询数据- (IBAction)select:(id)sender {        if ([db open]) {                //1 准备好sql语句        NSString * sqlSelect = [NSString stringWithFormat:@"select * from company where c_name like '%%中国%%'"];                //2 执行sql语句 并返回结果集        FMResultSet * resultSet = [db executeQuery:sqlSelect];                //3 遍历        while ([resultSet next]) {            int  cId = [resultSet intForColumn:ID];            NSString * cName = [resultSet stringForColumn:NAME];            int  ctel = [resultSet intForColumn:TEL];            int  pcount = [resultSet intForColumn:PCOUNT];            NSString * cAddress = [resultSet stringForColumn:ADDRESS];                        NSLog(@"cId = %d, cName = %@, cTel = %d, pcount = %d, cAddress = %@",cId,cName,ctel,pcount,cAddress);        }                [db close];    }    }- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end


多线程中FMDB的使用:

-(void) multithread{    FMDatabaseQueue * queue = [FMDatabaseQueue databaseQueueWithPath:database_path];    dispatch_queue_t q1 = dispatch_queue_create("queue1", NULL);    dispatch_queue_t q2 = dispatch_queue_create("queue2", NULL);        dispatch_async(q1, ^{        for (int i = 0; i < 50; ++i) {            [queue inDatabase:^(FMDatabase *db2) {                                NSString *insertSql1= [NSString stringWithFormat:                                       @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES (?, ?, ?)",                                       TABLENAME, NAME, AGE, ADDRESS];                                NSString * name = [NSString stringWithFormat:@"jack %d", i];                NSString * age = [NSString stringWithFormat:@"%d", 10+i];                                                BOOL res = [db2 executeUpdate:insertSql1, name, age,@"济南"];                if (!res) {                    NSLog(@"error to inster data: %@", name);                } else {                    NSLog(@"succ to inster data: %@", name);                }            }];        }    });        dispatch_async(q2, ^{        for (int i = 0; i < 50; ++i) {            [queue inDatabase:^(FMDatabase *db2) {                NSString *insertSql2= [NSString stringWithFormat:                                       @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES (?, ?, ?)",                                       TABLENAME, NAME, AGE, ADDRESS];                                NSString * name = [NSString stringWithFormat:@"lilei %d", i];                NSString * age = [NSString stringWithFormat:@"%d", 10+i];                                BOOL res = [db2 executeUpdate:insertSql2, name, age,@"北京"];                if (!res) {                    NSLog(@"error to inster data: %@", name);                } else {                    NSLog(@"succ to inster data: %@", name);                }            }];        }    });}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 PS字体很模糊怎么办 饿了么满减商家怎么办 淘宝优惠券误删怎么办 脖子凉凉的怎么办 腰部老是感觉冷怎么办 夏天腰部冰凉怎么办呢 腰部突然闪了怎么办 炭系导电胶太稀怎么办 怀孕鼻子变黑色怎么办 征信大数据黑了怎么办 楼层之间有洞怎么办 跨大类商品疑点怎么办? 出口跨大类商品怎么办 淘宝开店显示已有店怎么办 店铺被恶意骚扰怎么办 淘宝红包过期了怎么办 手机微信被盗怎么办 手机不支持支付宝计步怎么办 学付宝fid未启用怎么办 被恶意冒名举报怎么办 淘宝鞋子发重复怎么办 爆款不小心下架怎么办 淘宝店铺没订单怎么办 总是重复看东西怎么办 运费付重复了怎么办 广州羊城通坏了怎么办 商家搞虚假活动怎么办 网购联系不上卖怎么办 发快递没有单号怎么办 健身房卡丢了怎么办 健身房合同丢了怎么办 精子数量不达标怎么办 vivo黑屏振动怎么办呀! vivox5开机定屏怎么办 wlan小米手机打不开怎么办 手机wifi开不了怎么办 厨房橱柜坏了怎么办 二手房东转三手办营业执照怎么办 手机不能计步怎么办 媒体储存删除了怎么办 设备储存器空间不足怎么办