FMDB使用的一点心得:数据库创建、制表、查询等以及image转换成二进制nsdata保存到数据库中...

版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/u012951123/article/details/36871955
<span style="font-size:18px;">//首先,获取数据库的路径,(假设不存在,就是我们想要存储的路径),不用操心每次都创建数据库会反复,不会的,假设没有则创建,有了就不会再反复创建。
//接下来。我们要制表,首先我们先查看我们的表是否已经存在,方法在以下代码中;假设存在则跳过。不存在则创建</span>
-(void)DataBaseInit
{
    //获取Document目录下的数据库文件,没有则创建
    NSString *dbPath = [self getDBPath];
    FMDatabase *membersDB = [FMDatabase databaseWithPath:dbPath];
    if (![membersDB open]) {
        NSLog(@"open membersDB failed");
        return;
    }

    //监測数据库中我要须要的表是否已经存在
    NSString *existsSql = [NSString stringWithFormat:@"select count(name) as countNum from sqlite_master where type = 'table' and name = '%@'", @"Member" ];
    FMResultSet *rs = [membersDB executeQuery:existsSql];
    
    if ([rs next]) {
        NSInteger count = [rs intForColumn:@"countNum"];
        NSLog(@"The table count: %li", count);
        if (count == 1) {
            NSLog(@"log_keepers table is existed.");
            return;
        }
        
        NSLog(@"log_keepers is not existed.");
        //创建表
        //[membersDB executeUpdate:@"CREATE TABLE PersonList (Name text, Age integer, Sex integer,Phone text, Address text, Photo blob)"];
        [membersDB executeUpdate:@"CREATE TABLE Member (Name text, Age integer, Sex integer,Height integer, Weight integer, Photo blob)"];
    }  
    
    [rs close];
}

-(NSString *)getDBPath
{
    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *DBPath = [documentPath stringByAppendingPathComponent:@"members.db"];//成员列表数据库
    return DBPath;
}


以下是数据成员的加入。只是我首先检查数据库中我要建的成员是否已经存在,避免反复加入

-(void)doneAction:(UIButton *)button
{
    //保存到数据库 membersDB
    //获取Document目录下的数据库文件。没有则创建
    NSString *dbPath = [self getDBPath];
    FMDatabase *membersDB = [FMDatabase databaseWithPath:dbPath];
    if (![membersDB open]) {
        NSLog(@"open membersDB failed");
        return;
    }
    //返回数据库中第一条满足条件的结果
    //select count(name) as countNum from sqlite_master where type = 'table' and name = '%@'", @"log_keepers
    FMResultSet *rs =[membersDB executeQuery:@"SELECT COUNT(Name) AS countNum FROM Member WHERE Name = ?

",self.nameTextField.text]; while ([rs next]) { NSInteger count = [rs intForColumn:@"countNum"]; NSLog(@"countNum == %i",count); if (count > 0) { // NSLog(@"你要创建的成员,已经创建同名的!

"); //以下这个是我用的第三方库,用来提醒。非常方便,不用,凝视掉就可以  _noticeView = [[GCDiscreetNotificationView alloc]initWithText:@"成员已经保存 或者 同名成员已存在。" showActivity:YES inPresentationMode:GCDiscreetNotificationViewPresentationModeTop inView:self.view ]; [_noticeView showAndDismissAutomaticallyAnimated]; } else { //出入数据:刚健的成员加入进去 //插入数据 NSData *imageData = UIImagePNGRepresentation(self.iconImageView.image);//将png图片转化为nsdata BOOL insert = [membersDB executeUpdate:@"INSERT INTO Member (Name, Age, Sex, Height, Weight, Photo) VALUES (?

,?

,?,?

,?,?)",self.nameTextField.text,[NSNumber numberWithInteger:[self.ageTextField.text integerValue]],[NSNumber numberWithInteger:self.sex] ,[NSNumber numberWithInteger:[self.heightTextField.text integerValue]],[NSNumber numberWithInteger:[self.weightTextField.text integerValue]], imageData]; if (insert) { NSLog(@"加入成员成功!!

"); } } } //关闭数据库 [membersDB close]; }


项目开发过程中,疑惑非常多,fmdb是非常easy操作,对我这样的SQL小白的菜鸟来说,确实摸索了不少时间!等项目完毕,一定要恶补一下数据库的知识!


项目还在进行中。。。。。。兴许还会记录晚上有关数据库的操作。

以下是我开发中參考的一些文章:

   ios 经常使用sql语句分析。非常精辟:点击打开链接  http://www.cnblogs.com/wengzilin/archive/2012/03/27/2419851.html

 

iOS开发中使用FMDB解决数据存储问题  :http://witcheryne.iteye.com/blog/1917120




转载于:https://www.cnblogs.com/ldxsuanfa/p/10890168.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值