iOS第三方 - FMDB
FMDB
1 - SQLite 是一个轻量级的关系数据库。iOS SDK 很早就支持了 SQLite,在使用时只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是原生的 SQLite API 在使用上相当不友好且使用不便,在开源社区中就出现了一系列将 SQLite API 进行封装的库,而 FMDB 则是开源社区中的优秀者
2 - 如何使用 FMDB
// - Student.h
1 #import <Foundation/Foundation.h> 2 @interface Student : NSObject 3 4 @property(strong,nonatomic)NSString *name; 5 @property(strong,nonatomic)NSString *sex; 6 7 @end
// - Student.m
1 #import "Student.h" 2 @implementation Student 3 4 -(NSString*)description{ 5 6 return [NSString stringWithFormat:@"<%@:%@,%@>",[self class], self.name,self.sex]; 7 } 8 9 @end
// -ViewController.h:拖几个按钮(增删改查)
1 #import <UIKit/UIKit.h> 2 @interface ViewController : UIViewController 3 4 - (IBAction)deletBT:(id)sender;// 删 5 - (IBAction)addBT:(id)sender; // 增 6 - (IBAction)demandBT:(id)sender;// 查询 7 - (IBAction)updataBT:(id)sender;// 更新 8 9 @end
//- ViewController.m
1 #import "ViewController.h" 2 #import "FMDatabase.h"// 引入第三方 3 #import <sqlite3.h>// SQL 4 #import "Student.h" 5 @interface ViewController () 6 7 @property(nonatomic,strong)FMDatabase *FMDB; 8 @property(nonatomic,strong)NSString *DBPath; // 路径 9 @property(nonatomic,strong)NSFileManager *fileManager;// 文件管理器 10 @property(nonatomic,strong)NSArray *nameArray;// 硬数据:姓名 11 12 @end 13 14 @implementation ViewController 15 16 - (void)viewDidLoad { 17 [super viewDidLoad]; 18 19 // 数据源 20 self.nameArray = [NSArray arrayWithObjects:@"香蕉",@"苹果",@"橘子",@"菠萝",@"水蜜桃",@"荔枝",@"橙子",@"芒果",@"葡萄",@"栗子",@"花生", nil]; 21 22 // 路径 23 NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 24 // 指定文件 25 self.DBPath = [filePath stringByAppendingPathComponent:@"StudentDataBase.sqlite"]; 26 NSLog(@"%@",self.DBPath); 27 // 创建文件管理器 28 self.fileManager = [NSFileManager defaultManager]; 29 30 // 打开数据库 31 [self.FMDB open]; 32 // 该语句会检查指定文件是否存在:如果不存在,则自动创建(前提是先要打开数据库) 33 self.FMDB = [FMDatabase databaseWithPath:self.DBPath]; 34 35 if (![_fileManager fileExistsAtPath:self.DBPath]) { 36 37 NSLog(@"will create..."); 38 }else{ 39 40 NSLog(@"did existed!"); 41 42 // 数据库文件存在,创建表 43 BOOL res = [_FMDB executeUpdate:@"create table if not exists Student(name text,sex text)"]; 44 if (res) { 45 NSLog(@"table created succeed"); 46 }else{ 47 NSLog(@"table created failed"); 48 } 49 } 50 51 // 关闭数据库:数据库每次打开,使用完后,必须关闭 52 [self.FMDB close]; 53 } 54 55 56 // 删除 57 - (IBAction)deletBT:(id)sender { 58 [_FMDB open]; 59 60 NSString*sex = @"男"; 61 // 根据 SQL 语句进行删除 62 BOOL res = [_FMDB executeUpdate:@"delete from Student where name = ?",sex]; 63 if (res) { 64 65 NSLog(@"delet Succeeded!"); 66 }else{ 67 68 NSLog(@"delet Failed!"); 69 } 70 71 [_FMDB close]; 72 } 73 74 // 增加 75 - (IBAction)addBT:(id)sender { 76 [self.FMDB open]; 77 78 // 随机数 79 int dex_i = arc4random()%11; 80 NSString*name = [self.nameArray objectAtIndex:dex_i]; 81 82 NSString*sex = nil; 83 if (dex_i%2 == 0) { 84 sex = @"女"; 85 }else{ 86 sex = @"男"; 87 } 88 89 // 同样根据 SQL 语句做添加 90 BOOL res = [_FMDB executeUpdate:@"insert into Student values(?,?)",name,sex]; 91 if (res) { 92 93 NSLog(@"add Succeeded!"); 94 }else{ 95 96 NSLog(@"add Failed!"); 97 } 98 99 [self.FMDB close]; 100 } 101 102 // 查询操作 103 - (IBAction)demandBT:(id)sender { 104 [_FMDB open]; 105 106 // 根据 SQL 语句进行查询,返回 set 集合 107 FMResultSet *set = [_FMDB executeQuery:@"select * from Student"]; 108 109 // 依次读出数据,知道表中数据读完为止 110 while ([set next] ) { 111 112 NSString *aName = [set stringForColumn:@"name"];// 根据字段获取数据 113 //NSString *aName= [set stringForColumnIndex:0]; 114 115 //NSString *aSex = [set stringForColumn:@"sex"]; 116 NSString *aSex = [set stringForColumnIndex:1];// 根据字段下标获取数据 117 118 // 若存在其它类型的字段,获取方法如下 119 //[set intForColumn:@"age"]// 获取 age 方法 120 //[set dataForColumn:@"image"]// 获取 image 方法 121 122 Student *st = [[Student alloc] init]; 123 st.name = aName; 124 st.sex = aSex; 125 NSLog(@"%@",st); 126 } 127 128 [_FMDB close]; 129 } 130 131 // 更新 132 - (IBAction)updataBT:(id)sender { 133 [_FMDB open]; 134 135 NSString *sex = @"女"; 136 // 根据 SQL 语句做修改 137 BOOL res = [_FMDB executeUpdate:@"update Student set name = ? where sex = ?",@"5998",sex]; 138 if (res) { 139 140 NSLog(@"updata Succeeded!"); 141 }else{ 142 143 NSLog(@"updata Failed!"); 144 } 145 146 [_FMDB close]; 147 } 148 149 @end
链接:FMDB
https://pan.baidu.com/s/1iDFL8D-4Cwm27nTUEEqqkw
4n3h