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

posted on 2018-03-21 15:40  低头捡石頭  阅读(16)  评论(0编辑  收藏  举报

导航