iOS 数据库升级

使用FMDB结合FMDBMigrationManager(一个三方库)的方式

1、首先自定义一个sql语句的类

#import#import"FMDBMigrationManager.h"

@interfaceMigration:NSObject

  • (instancetype)initWithName:(NSString*)name andVersion:(uint64_t)version andExecuteUpdateArray:(NSArray*)updateArray;//自定义方法@property(nonatomic,readonly)NSString*name;

@property(nonatomic,readonly) uint64_t version;

  • (BOOL)migrateDatabase:(FMDatabase )database error:(outNSError__autoreleasing *)error;

@end

#import"Migration.h"

@interfaceMigration()

@property(nonatomic,copy)NSString * myName;

@property(nonatomic,assign)uint64_t myVersion;

@property(nonatomic,strong)NSArray * updateArray;

@end

@implementationMigration

  • (instancetype)initWithName:(NSString *)name andVersion:(uint64_t)version andExecuteUpdateArray:(NSArray *)updateArray

{

if(self=[superinit]) {

_myName=name;

_myVersion=version;

_updateArray=updateArray;

}

returnself;

}

  • (NSString *)name

{

return_myName;

}

  • (uint64_t)version

{

return_myVersion;

}

  • (BOOL)migrateDatabase:(FMDatabase *)database error:(outNSError __autoreleasing)error

{

for(NSString * updateStrin_updateArray)

{

[database executeUpdate:updateStr];

}

returnYES;

}

@end

2、每次升级数据库只要创建新的sql语句的对象就好

FMDBMigrationManager * manager=[FMDBMigrationManager managerWithDatabaseAtPath:DBPath migrationsBundle:[NSBundle mainBundle]];

Migration * migration_1=[[Migration alloc]initWithName:@"新增USer表"andVersion:1andExecuteUpdateArray:@[@“create table User(name text,age integer)”]];

Migration * migration_2=[[Migration alloc]initWithName:@"USer表新增字段email"andVersion:2andExecuteUpdateArray:@[@“alter table User add email text”]];

Migration * migration_3=[[Migration alloc]initWithName:@"USer表新增字段address"andVersion:3andExecuteUpdateArray:@[@“alter table User add address text”]];

[manager addMigration:migration_1];

[manager addMigration:migration_2];

[manager addMigration:migration_3];

BOOLresultState=NO;

NSError* error=nil;

if(!manager.hasMigrationsTable) {

resultState=[manager createMigrationsTable:&error];

}

resultState=[manager migrateDatabaseToVersion:UINT64_MAXprogress:nilerror:&error];

相关推荐

  1. iOS 数据库升级

    2024-05-16 13:02:04       31 阅读
  2. iOS cocoapods 升级

    2024-05-16 13:02:04       33 阅读
  3. room数据库升级

    2024-05-16 13:02:04       38 阅读
  4. IO数据流

    2024-05-16 13:02:04       35 阅读
  5. 升级Xcode15,iOS17后问题解决

    2024-05-16 13:02:04       75 阅读
  6. XCODE IOS 静态链接库替换升级

    2024-05-16 13:02:04       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-16 13:02:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-16 13:02:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-16 13:02:04       87 阅读
  4. Python语言-面向对象

    2024-05-16 13:02:04       96 阅读

热门阅读

  1. LeetCode 22. 括号生成

    2024-05-16 13:02:04       53 阅读
  2. 循环、使用dict和set

    2024-05-16 13:02:04       34 阅读
  3. 使用 Gradle 自定义任务生成初始化 SQL 文件

    2024-05-16 13:02:04       38 阅读
  4. 数学建模(科普)

    2024-05-16 13:02:04       38 阅读
  5. IT行业的现状与未来:技术驱动下的新世界

    2024-05-16 13:02:04       39 阅读
  6. js 数组filter使用

    2024-05-16 13:02:04       34 阅读
  7. RIP、OSPF、BGP等协议及华为路由器配置总结

    2024-05-16 13:02:04       37 阅读
  8. 40-2 了解与安装堡垒机

    2024-05-16 13:02:04       33 阅读
  9. Leetcode 404:左叶子之和

    2024-05-16 13:02:04       36 阅读
  10. 力扣:131. 分割回文串

    2024-05-16 13:02:04       31 阅读
  11. 力扣 72. 编辑距离 python AC

    2024-05-16 13:02:04       33 阅读
  12. 课时126:awk实践_进阶知识_内置函数1

    2024-05-16 13:02:04       32 阅读