先简单介绍一下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];