zoukankan      html  css  js  c++  java
  • FMDB基本操作

          1、以前使用数据库,因为一般就建立一张表,所以都是自己写代码创建,没用过fmdb,这次因为项目中涉及聊天模块,需要多张表格和数据库保存聊天记录

    按照以前方法不好操作,就研究了下fmdb,发现确实挺方便的。FMDB下载地址:https://github.com/ccgus/fmdb

           2、导入FMDB文件,再导入libsqlite3.tbd依赖包。

        //创建打开数据库
        NSString *path = [self getDBPath:@"student"];//如果名称为空 数据库断开时会删除
        DDb = [FMDatabase databaseWithPath:path];
        
        [self createTable:@"95230"]; //建表
        [self insertDate:@"95230"];  //添加数据
        [self updataWithTable:@"95230"]; //修改
        [self deledataWith:@"95230"]; //删除
        [self chaxunWith:@"95230"]; //查询
        
        NSLog(@"%@/Documents",NSHomeDirectory()); //模拟器运行时 打开Documents查看数据库文件
    //查询数据库
    -(void)chaxunWith:(NSString *)tabname
    {
        if ([DDb open]) {
    //        NSString *sql = [NSString stringWithFormat:@"select * from '%@' where age = '%@'",tabname,@"18"];//
            NSString *sql = [NSString stringWithFormat:@"select * from '%@'",tabname];
            FMResultSet * rs = [DDb executeQuery:sql];
            while ([rs next]) {
                NSString * name = [rs stringForColumn:@"name"];
                int age = [rs intForColumn:@"age"];
                NSData *imgdata = [rs dataForColumn:@"image"];
                NSLog(@"%@ - %i",name,age);
            }
            [DDb close];
        }
    }
    
    //删除数据
    -(void)deledataWith:(NSString *)tabname
    {
        if ([DDb open]) {
            NSString *sql = [NSString stringWithFormat:@"delete from '%@' where %@ = '%@'",tabname,@"age",@"19"];
            BOOL dele = [DDb executeUpdate:sql];
            if (!dele) {
                NSLog(@"delete fail");
            }
            [DDb close];
        }
    }
    
    //修改数据
    -(void)updataWithTable:(NSString *)tabname
    {
        if ([DDb open]) {
            NSString *sql = [NSString stringWithFormat:@"update '%@' set %@ = '%@' where age = '%@'",tabname,@"name",@"张86",@"18"];
            BOOL update =[DDb executeUpdate:sql];
            if (!update) {
                NSLog(@"update fail");
            }
            [DDb close];
        }
    }
    
    //添加数据
    -(void)insertDate:(NSString *)tabname
    {
        if ([DDb open])
        {
            NSString *bb = [NSString stringWithFormat:@"INSERT INTO '%@' (name, age, image) VALUES (?,?,?)",tabname];
    //        UIImage *img = [UIImage imageNamed:@"test"];
    //        NSData *imgdata = UIImagePNGRepresentation(img);
            BOOL insert = [DDb executeUpdate:bb,@"小三",@"20",[NSData data]];
            if (!insert) {
                NSLog(@"insert fail");
            }
            [DDb close];
        }
    }
    //创建数据库表格
    -(void)createTable:(NSString *)tabname
    {
        if ([DDb open]) {
            //判断表名是否为纯数字
            NSString *sqlCreateTable =  [NSString stringWithFormat:@"create table if not exists '%@' (id INTEGER PRIMARY KEY AUTOINCREMENT, name text,age integer, image blob)",tabname];         BOOL res = [DDb executeUpdate:sqlCreateTable];
            if (!res) {
                NSLog(@"创建表格失败");
            }
            [DDb close];
        }
    }
    
    //创建数据库
    -(NSString *)getDBPath:(NSString *)curname
    {
        curname = [NSString stringWithFormat:@"%@.sqlite",curname];
        NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString *DBPath = [documentPath stringByAppendingPathComponent:curname];
        return DBPath;
    }

    注:FMDB写入图片数据NSData时候,图片转换成数据流用 UIImageJPEGRepresentation( img , float); 如果用 UIImagePNGRepresentation转的话,写入数据库时间会变长,

          我5张图片没有压缩转 写入数据库时间需要花费1.5秒,而且是写入任何一个参数都要1.5秒。

    >>>>>  其他比较详细的FMDB使用介绍

    =====> http://m.blog.csdn.net/article/details?id=7204625

    O(∩_∩)O

  • 相关阅读:
    Attach Files to Objects 将文件附加到对象
    Provide Several View Variants for End-Users 为最终用户提供多个视图变体
    Audit Object Changes 审核对象更改
    Toggle the WinForms Ribbon Interface 切换 WinForms 功能区界面
    Change Style of Navigation Items 更改导航项的样式
    Apply Grouping to List View Data 将分组应用于列表视图数据
    Choose the WinForms UI Type 选择 WinForms UI 类型
    Filter List Views 筛选器列表视图
    Make a List View Editable 使列表视图可编辑
    Add a Preview to a List View将预览添加到列表视图
  • 原文地址:https://www.cnblogs.com/qq95230/p/5814697.html
Copyright © 2011-2022 走看看