先简单介绍一下FMDB,FMDB是iOS平台的SQLite数据库框架,以OC的方式封装了SQLite的C语言API。使用起来很方便,省去了很多冗余的C语言代码,对比苹果自带的Core Data框架,更加轻量级和灵活,提供了多线程安全的数据库操作方法,有效地防止数据混乱。
-------------------------------------------------------------------------------------------------------------------
github地址
https://github.com/ccgus/fmdb
具体使用:
1.将FMDB导入到你的项目中去,然后添加libsqlite3.tbd(xcode7以后的版本).
2.
#import <Foundation/Foundation.h> @interface DataBaseManager : NSObject //写个单例 +(instancetype)sharedFMDataBase;
#import "DataBaseManager.h" #import "FMDB.h" @interface DataBaseManager() @property (nonatomic,strong) FMDatabase * db; @end @implementation DataBaseManager +(instancetype)sharedFMDataBase{ static DataBaseManager*manager=nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ manager=[[DataBaseManager alloc]init]; }); return manager; } - (instancetype)init { self = [super init]; if (self) { NSString*doc=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];//得到数据库 NSString*filename=[doc stringByAppendingPathComponent:@"students.sqlite"]; //当数据库文件不存在时会自动创建一个数据库文件。 //判断数据库是否存在 if (!self.db) { //不存在创建 self.db=[FMDatabase databaseWithPath:filename]; } //为数据库设置缓存,提高查询效率 [self.db setShouldCacheStatements:YES]; BOOL open=[self.db open];//测试数据库是否打开成功 if(open){ NSLog(@"数据库打开成功"); }else{ NSLog(@"数据库打开失败"); } //打开数据库 if ([self.db open]) { if (![self.db tableExists:@"t_student"]) { //创建表 BOOL result=[self.db executeUpdate: @"CREATE TABLES t_student(id INTEGER PRIMARY KEY AUTOINCREAMENT, name TEXT, age TEXT)"]; if (result) { NSLog(@"成功创表"); }else{ NSLog(@"创表失败"); } } NSLog(@"已经有表了,不需要重新添加"); } //关闭数据库 [self.db close]; } return self; }
对数据的基本操作:
//添加数据 [self.db open]; [self.db executeUpdate:@"INSERT INTO t_student(name,age)values(?,?)",@"xiaoming",@"123"]; [self.db close];
//查询数据 [self.db open]; FMResultSet*resultSet=[self.db executeQuery:@"select * from t_student"]; while ([resultSet next]) { int ID = [resultSet intForColumn:@"id"]; NSString *name = [resultSet stringForColumn:@"name"]; NSString* age = [resultSet stringForColumn:@"age"]; NSLog(@"%d %@ %@", ID, name, age); } [self.db close];
//查询某条数据 NSString*string=[NSString stringWithFormat:@"select age from t_students where id=%d",4]; NSString*str=[self.db stringForQuery:string];