当前位置:   article > 正文

iOS 第三方框架之FMDB的基本使用_ios fmdb第三发框架

ios fmdb第三发框架

1.首先导入FMDB的第三方框架



2.添加sqllite框架



3.使用FMDB的DataBase

3.1添加属性和方法

  1. @property (nonatomic,strong) FMDatabase *database;
  2. - (IBAction)insert;
  3. - (IBAction)update;
  4. - (IBAction)delete;
  5. - (IBAction)query;
3.2 加载界面时,创建数据库,打开数据库,建表

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. // 创建数据库文件,打开数据库,建表
  5. [self myDatabase];
  6. }
  1. // 创建数据库文件,打开数据库,建表的方法
  2. - (void)myDatabase
  3. {
  4. // 获得沙盒中的数据库文件名
  5. NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
  6. NSString *fileName = [doc stringByAppendingPathComponent:@"student.sqlite"];
  7. // 创建数据库实例对象
  8. self.database = [FMDatabase databaseWithPath:fileName];
  9. // 打开数据库
  10. if ([self.database open]) {
  11. NSLog(@"数据库打开成功");
  12. // 创表
  13. BOOL result = [self.database executeUpdate:@"create table if not exists t_student(id integer primary key autoincrement , name text , age integer);"];
  14. if (result) {
  15. NSLog(@"创表成功");
  16. }else{
  17. NSLog(@"创表失败");
  18. }
  19. }else{
  20. NSLog(@"数据库打开失败");
  21. }
  22. }
3.2更新操作,在FMDB了,插入,更新,删除都是更新操作

  1. // 插入
  2. - (IBAction)insert {
  3. for (int i = 0; i < 40; i++) {
  4. NSString *name= [NSString stringWithFormat:@"rose_%d", arc4random()%100 + 1];
  5. NSNumber *age = [NSNumber numberWithInt:arc4random()%100 + 1];
  6. [self.database executeUpdate:@"insert into t_student(name,age) values (?,?);",name,age];
  7. }
  8. }
  9. // 更新
  10. - (IBAction)update{
  11. [self.database executeUpdate:@"update t_student set age = ? where name = ? ;",@30,@"rose_14"];
  12. }
  13. // 删除
  14. - (IBAction)delete{
  15. [self.database executeUpdate:@"delete from t_student;"];
  16. }
3.3 查询操作

  1. // 查询
  2. - (IBAction)query{
  3. FMResultSet *result = [self.database executeQuery:@"select * from t_student where age > ?;",@20];
  4. while(result.next){
  5. int ID = [result intForColumn:@"id"];
  6. NSString *name = [result stringForColumn:@"name"];
  7. int age = [result intForColumn:@"age"];
  8. NSLog(@"ID:%d ,name:%@ , age:%d",ID,name,age);
  9. }
  10. }



4.使用FMDB的DataBaseQueue

4.1 新增属性和4个方法

  1. @property (nonatomic,strong) FMDatabaseQueue *dbq;
  2. - (IBAction)insertDBQ;
  3. - (IBAction)updateDBQ;
  4. - (IBAction)deleteDBQ;
  5. - (IBAction)queryDBQ;

4.2 创建数据库,打开数据库,创建表

  1. #pragma mark - databaseQueue
  2. // 创建数据库文件,打开数据库,建表
  3. - (void)myDatabaseQueue
  4. {
  5. NSString *fileName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:@"studentDBQ.sqlite"];
  6. self.dbq = [FMDatabaseQueue databaseQueueWithPath:fileName];
  7. [self.dbq inDatabase:^(FMDatabase *db) {
  8. BOOL result = [db executeUpdate:@"create table if not exists t_student (id integer primary key autoincrement,name text ,age integer );"];
  9. if (result) {
  10. NSLog(@"创表成功");
  11. }else{
  12. NSLog(@"创表失败");
  13. };
  14. }];
  15. }


4.3 更新操作

  1. // 插入 databaseQueue
  2. - (IBAction)insertDBQ {
  3. [self.dbq inDatabase:^(FMDatabase *db) {
  4. for (int i = 0; i < 50; i ++) {
  5. NSString *name =[ NSString stringWithFormat:@"jack_%d",arc4random()%1000];
  6. NSNumber *age = @(arc4random()%100 + 1);
  7. [db executeUpdate:@"insert into t_student (name,age) values(?,?)",name,age ];
  8. }
  9. }];
  10. }
  11. // 更新表<span style="font-family: Menlo;">databaseQueue</span>
  12. - (IBAction)updateDBQ{
  13. [self.dbq inDatabase:^(FMDatabase *db) {
  14. // 开启事务
  15. // [db executeUpdate:@"begin transaction;"]; 或者下面这一句
  16. // [db beginTransaction];
  17. [db executeUpdate:@"update t_student set age = ? ;", @20];
  18. [db executeUpdate:@"update t_student set age = ? ;", @20];
  19. [self.database executeUpdate:@"update t_student set age = ? ;",@30];
  20. // if (发现情况不对){
  21. // // 回滚事务
  22. // [db rollback];
  23. // [db executeUpdate:@"rollback transaction;"];或者上面这一句
  24. // }
  25. [db executeUpdate:@"update t_student set age = ? where name = ?;", @20, @"jack"];
  26. // 提交事务
  27. // [db commit];
  28. // [db executeUpdate:@"commit transaction;"];或者换用上面这一句
  29. }];
  30. }
  31. // 删除
  32. - (IBAction)deleteDBQ{
  33. [self.dbq inDatabase:^(FMDatabase *db) {
  34. [db executeUpdate:@"delete from t_student;"];
  35. }];
  36. }
4.4 查询操作

  1. // 查询
  2. - (IBAction)queryDBQ{
  3. [self.dbq inDatabase:^(FMDatabase *db) {
  4. FMResultSet *rs = [db executeQuery:@"select * from t_student where age > ?",@50];
  5. while (rs.next) {
  6. NSString *name = [rs stringForColumn:@"name"];
  7. int age = [rs intForColumn:@"age"];
  8. NSLog(@"name:%@ , age:%d",name ,age);
  9. }
  10. }];
  11. }















声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/860799
推荐阅读
相关标签
  

闽ICP备14008679号