• iOS开发——高级篇——FMDB 数据库简单使用


     1 #import <Foundation/Foundation.h>
     2 
     3 @interface UserDB : NSObject
     4 
     5 // 把userDB设计成一个单例类
     6 + (id)shareInstance;
     7 
     8 // 创建用户表
     9 - (void)createTable;
    10 
    11 // 添加用户
    12 - (void)addData:(NSArray *)dataArray;
    13 
    14 // 查询用户
    15 - (NSArray *)findDatas;
    16 
    17 // 删除一行数据
    18 - (void)deleteRowData:(NSArray *)array;
    19 
    20 // 清空表中的数据:
    21 - (void)clearTableData;
    22 
    23 // 更新数据
    24 - (void)executeUpdate:(NSArray *)array;
    25 
    26 @end
    .h文件
      1 #import "UserDB.h"
      2 #import <FMDB.h>
      3 
      4 #define dataBasePath [[(NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)) lastObject]stringByAppendingPathComponent:dataBaseName]
      5 #define dataBaseName @"GuoBIn.sqlite"
      6 
      7 // 把userDB设计成一个单例类
      8 static UserDB *instnce;
      9 
     10 @implementation UserDB
     11 
     12 // 把userDB设计成一个单例类
     13 + (id)shareInstance
     14 {
     15     if (instnce == nil) {
     16         instnce = [[[self class] alloc] init];
     17     }
     18     return instnce;
     19 }
     20 
     21 // 创建用户表
     22 - (void)createTable
     23 {
     24     // 文件路径
     25     NSString *filePath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",dataBaseName];
     26     NSLog(@"文件路径 == %@",filePath);
     27     
     28     FMDatabase *db = [FMDatabase databaseWithPath:dataBasePath];
     29     
     30     if ([db open]) {
     31         if (![db tableExists:@"user"]) {
     32             if ([db executeUpdate:@"CREATE TABLE user (Serial text primary key,dataText text)"]) {
     33                 NSLog(@"创建表成功");
     34             }else{
     35                 NSLog(@"创建表失败");
     36             }
     37         } else {
     38             NSLog(@"表已经存在");
     39         }
     40     } else{
     41         NSLog(@"打开表失败");
     42     }
     43     [db close];
     44     
     45 }
     46 
     47 // 添加用户
     48 - (void)addData:(NSArray *)dataArray
     49 {
     50     NSString *serial   = [dataArray objectAtIndex:0];
     51     NSString *dataText = [dataArray objectAtIndex:1];
     52     
     53     FMDatabase *db = [FMDatabase databaseWithPath:dataBasePath];
     54     if ([db open]) {
     55     // 插入数据
     56     [db executeUpdate:@"insert into user (Serial,DataText) values(?,?)",serial,dataText,nil];
     57     }
     58     [db close];
     59 }
     60 
     61 // 查询用户
     62 - (NSArray *)findDatas
     63 {
     64     NSMutableArray *users = [NSMutableArray array];
     65     FMDatabase *db = [FMDatabase databaseWithPath:dataBasePath];
     66     if ([db open]) {
     67         // 获取所有数据
     68         FMResultSet *rs = [db executeQuery:@"SELECT * FROM user"];
     69         while ([rs next]) {
     70             NSString *serial = [rs stringForColumn:@"Serial"];
     71             NSString *dataText = [rs stringForColumn:@"DataText"];
     72             
     73             [users addObject:@[serial,dataText]];
     74         }
     75         [rs close];
     76     }
     77     [db close];
     78     return users;
     79 }
     80 
     81 - (void)deleteRowData:(NSArray *)array
     82 {
     83     NSString *serial = [array objectAtIndex:0];
     84     NSString *dataText = [array objectAtIndex:1];
     85     
     86     FMDatabase *db = [FMDatabase databaseWithPath:dataBasePath];
     87     if ([db open]) {
     88         // 删除某个数据
     89         BOOL rs = [db executeUpdate:@"DELETE FROM user WHERE Serial = ? and DataText = ?",serial,dataText];
     90         
     91         if (rs) {
     92             NSLog(@"删除成功");
     93         } else {
     94             NSLog(@"删除失败");
     95         }
     96     }
     97     [db close];
     98 }
     99 
    100 // 清空表中的数据:
    101 - (void)clearTableData
    102 {
    103     FMDatabase *db = [FMDatabase databaseWithPath:dataBasePath];
    104     if ([db open]) {
    105         // 清除全部数据
    106         [db executeUpdate:@"DELETE FROM user"];
    107     }
    108     [db close];
    109 }
    110 
    111 // 更新数据
    112 - (void)executeUpdate:(NSArray *)array
    113 {
    114     NSString *serial = [array objectAtIndex:0];
    115     NSString *dataText = [array objectAtIndex:1];
    116     
    117     FMDatabase *db = [FMDatabase databaseWithPath:dataBasePath];
    118     if ([db open]) {
    119         [db executeUpdate:@"UPDATE user SET DataText = ? WHERE Serial = ?",dataText,serial];
    120     }
    121     [db close];
    122     
    123 }
    124 
    125 @end
    .m文件
  • 相关阅读:
    利用jmSlip写一个移动端顶部日历选择组件
    JS写的排序算法演示
    jmSlip WEB前端滑屏组件
    如何:使用 Visual Basic 编写基于 Unity3D 的计算器
    验证 .NET 4.6 的 SIMD 硬件加速支持的重要性
    VB 2015 的 闭包(Closure)
    VS "15" 预览 5 中 VB 15 新增的功能
    演练:使用Xamarin.Forms开发产品介绍性质的应用(VB版)
    UWP游戏防内存修改器的方法
    优化win2d实现的萤火虫粒子效果
  • 原文地址:https://www.cnblogs.com/chglog/p/9111172.html
Copyright © 2020-2023  润新知