標籤:
SQLiteManager 資料層---> 包括: library(使用者資訊)tmp(臨時檔案[使用者退出時不定時清除])Document
1.Documents:
只有使用者產生的檔案、其他資料及其他程式不能重新建立的檔案,應該儲存在<Application_Home>/Documents 目錄下面,並將通過iCloud自動備份。
2.Library:
可以重新下載或者重建的資料應該儲存在 <Application_Home>/Library/Caches 目錄下面。舉個例子,比如雜誌、新聞、地圖應用使用的資料庫快取檔案和可下載內容應該儲存到這個檔案夾。
3.tmp:
只是臨時使用的資料應該儲存到 <Application_Home>/tmp 檔案夾。儘管 iCloud 不會備份這些檔案,但在應用在使用完這些資料之後要注意隨時刪除,避免佔用使用者裝置的空間
引用libsqlite3.tbd資源檔和"FMDB 檔案夾"
然後添加 SQLiteManager
在SQLiteManager. h 檔案中插入單例和BOOL 類型更新資料庫的方法和(數群組類型的獲得SQL的方法)將得到的SQL放入數組中
1 +(instancetype)share; 2 /** 3 * 更新資料庫資料 4 * 5 * @param sql sql 語句 6 * 7 * @return 返回成功或者失敗 8 */ 9 -(BOOL)run:(NSString *)sql;10 /**11 * 尋找資料庫資料12 *13 * @param sql 尋找的sql 語句14 *15 * @return 返回根據傳進來的 sql 語句查詢的結果16 */17 -(NSArray *)getData:(NSString *)sql;
然後在SQLiteManager.m 檔案中實現各個方法
首先引入標頭檔#import "FMDatabase"
添加一個 FMDatabase屬性 fmDB, 實現單例方法, init初始化 方法並添加一個 creatDB的方法
在creatDB 方法中實現如下幾步:
1.指定 NSHomeDirectory 路徑
2.初始化 fmDB, 並且在建立的時候指定資料庫路徑
3.開啟資料庫{執行資料庫操作,如果有 Person, 則跳過,沒有則建立}
然後實現更新資料庫操作和尋找資料庫資料操作,代碼如下:
#import "SQLiteManager.h"#import "FMDatabase.h"@interface SQLiteManager ()@property (nonatomic,strong)FMDatabase *fmdb;@end@implementation SQLiteManager+(instancetype)share{ static SQLiteManager *cm = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ cm = [[SQLiteManager alloc] init]; }); return cm;}- (instancetype)init{ if (self = [super init]) { [self creatDB]; } return self;}-(void)creatDB{ //1.指定 NSHomeDiretory 路徑 NSString *path = [NSString stringWithFormat:@"%@/Documents/app.db",NSHomeDirectory()]; NSLog(@"path = %@",path); //2.初始化 FMDB, 並且在建立的時候指定資料庫路徑 self.fmdb = [[FMDatabase alloc] initWithPath:path]; //3.開啟資料庫 if ([self.fmdb open]) { //4.執行資料庫操作,如果當前有 Person, 則跳過,沒有則建立 NSString *sql = @"CREATE TABLE \"Person\" (\"person_id\" INTEGER PRIMARY KEY AUTOINCREMENT, \"name\" TEXT, \"tel\" TEXT, \"age\" TEXT)"; [self run:sql]; }else { NSLog(@"開啟資料庫失敗!"); return; }}-(BOOL)run:(NSString *)sql{ return [self.fmdb executeUpdate:sql];}-(NSArray *)getData:(NSString *)sql{ FMResultSet *result = [self.fmdb executeQuery:sql]; NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:0]; while ([result next]) { NSDictionary *dic = [result resultDictionary];//遍曆 [mArr addObject:dic]; } return [NSArray arrayWithArray:mArr]; return nil;}@end
在 ViewController 檔案中增加添加和查詢操作,先添加"SQLiteManager"標頭檔
添加 SQLiteManager 屬性
在 VD 方法中添加 self.sqlManager = [SQLiteManager share];
實現添加方法和查詢方法
1 #import "ViewController.h" 2 #import "SQLiteManager.h" 3 @interface ViewController () 4 @property (nonatomic,strong)SQLiteManager *sqlManager; 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad {10 [super viewDidLoad];11 // Do any additional setup after loading the view, typically from a nib.12 self.sqlManager = [SQLiteManager share];13 }14 #pragma mark 添加15 - (IBAction)tapAddBtn:(id)sender {16 NSString *sql = @"insert into person(name,age,tel) values(‘mark‘,‘18‘,‘119‘)";17 if ([self.sqlManager run:sql]) {18 NSLog(@"添加成功");19 }20 else21 {22 NSLog(@"添加失敗");23 }24 [self.sqlManager run:sql];25 }26 #pragma mark 查詢27 - (IBAction)tapSearchBtn:(id)sender {28 NSString *sql = @"select * from person where name = ‘mark‘";29 [self.sqlManager getData:sql];30 NSArray *result = [self.sqlManager getData:sql];31 NSLog(@"查詢結果 result = %@",result);32 }33 34 - (void)didReceiveMemoryWarning {35 [super didReceiveMemoryWarning];36 // Dispose of any resources that can be recreated.37 }38 39 @end
View Code
SQLite第一天:通過代碼對本地的 SQLite 進行一系列操作