加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SQLite - FMDB基本使用

(2013-04-23 09:12:56)
标签:

sqlite

fmdb

it

分类: Mac/IOS那些事
Title:SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将SQLite API进行封装的库,而FMDB (https://github.com/ccgus/fmdb) 则是开源社区中的优秀者。

1. 导入libssqlite3.0.dylib
2. 下载FMDB 然后把src下的文件除了fmdb.m(其实是实例文件)拷贝到supporting files目录下
3. 需要注意的是默认的存放目录是在 ~Documents/目录下 加入db不存在就创建
3. 连接 - 基本操作  - 存入文件  其实直接看fmdb.m上面的例子就可以了,例子写的很全面
#import
#import "FMDatabase.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {
       
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                          NSUserDomainMask, YES);
            NSString *documentDirectory = [paths objectAtIndex:0];
            NSString *dbPath = [documentDirectory stringByAppendingPathComponent:
            @"MyDatabase.db"];
            FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;
            if (![db open]) {
                NSLog(@"can 't open database");
                   return -1;
            }
        NSString *filepath = [[NSBundle mainBundle]pathForResource:@"test" ofType:@"png"];
        //基本操作
        [db executeUpdate:@"CREATE TABLE PersonList (Name text, Age integer, Sex integer,
        Phone text, Address text, Photo blob)"];
        [db executeUpdate:@"INSERT INTO PersonList (Name, Age, Sex, Phone, Address, Photo)
        VALUES (?,?,?,?,?,?)",
        
         @"Jony", [NSNumber numberWithInt:20], [NSNumber numberWithInt:0], @"091234567",
         @"Taiwan, R.O.C", [NSData dataWithContentsOfFile: filepath]];
       FMResultSet *GetColume = [db executeQuery:@"select * from PersonList where age = ?",
       [NSNumber numberWithInt:20]];
        while([GetColume next])
        {
            NSLog(@"columeItem =%@",[GetColume stringForColumn:@"Name"]);
        }
       
        // 文件或图片文件的写入 db
        [db executeUpdate:@"create table blobTable (a text, b blob)"];
        NSData *test = [NSData dataWithContentsOfFile:@"/tmp/pic.png"];
        if (test) {
            [db executeUpdate:@"insert into blobTable (a, b) values (?,?)", @"picpng", test];
           
          FMResultSet  *rs = [db executeQuery:@"select b from blobTable where a = ?", @"picpng"];
            while([rs next]) {
                test = [rs dataForColumn:@"b"];
                [test writeToFile:@"/tmp/pic2.png" atomically:NO];
                system("/usr/bin/open /tmp/pic.png"); //这行就默认使用图片查看器打开了这张图片

                test = [rs dataNoCopyForColumn:@"b"];
                [test writeToFile:@"/tmp/pic_data_no_copy.png" atomically:NO];
                system("/usr/bin/open /tmp/pic_data_no_copy.png");
            }
            else {
                NSLog(@"Could not select image.");
            }
           
            [rs close];
           
        }
        else {
            NSLog(@"Can't find compass image..");
        }
    }
    return 0;
}


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有