SQLiteWrapper 0.1.3

SQLiteWrapper 0.1.3

测试已测试
语言语言 Objective-CObjective C
许可证 MIT
发布上次发布2017年1月

Dave O'Neill维护。



  • dave234

A very lightweight SQLIte wrapper with a SQL like API

创建

有四种 Objective-C 数据类型
NSString => k_sql_type_text,
NSNumber(double) => k_sql_type_real,
NSNumber(int) => k_sql_type_int,
NSData => k_sql_type_blob,
表格是用交替的字段名/类型字符串的数组构建的

NSString *personTable   = @"personTable";
NSString *ageColumn     = @"ageKey";
NSString *nameColumn    = @"nameKey";
NSString *idColumn      = @"idKey";
SqliteWrapper *sqlWrap = [[SqliteWrapper alloc]initWithPath:dbpath];
[[sqlWrap create:personTable
    withKeyTypes:@[idColumn,     k_sql_type_integer_primary_key,
                   nameColumn,   k_sql_type_text,
                   ageColumn,    k_sql_type_int]
withConstraints:NULL]execute];

插入

  • 查询对象从它的许多方法返回自身,从而使命令可以串联。
  • 实际的查询是在调用执行命令时执行的。结果命令调用执行。
  • 结果命令返回一个 NSArray,其中值以列名作为键存储
  • 插入查询执行后可以从插入查询中获取插入 ID
  • 接受 "value_s" 参数的方法可以接受一个对象或对象数组

NSDictionary *dorkusInfo    = @{nameColumn:@"Dorkus",ageColumn:@(64)};
NSDictionary *bipkusInfo    = @{nameColumn:@"Bipkus",ageColumn:@(35)};
NSDictionary *barneyInfo    = @{nameColumn:@"Barney",ageColumn:@(45)};
NSDictionary *jennyInfo     = @{nameColumn:@"Jenny",ageColumn:@(432)};

[[sqlWrap insertInto:personTable keysAndValues:dorkusInfo]execute];
[[sqlWrap insertInto:personTable keysAndValues:bipkusInfo]execute];
[[sqlWrap insertInto:personTable keysAndValues:barneyInfo]execute];
Query *jennyInsertQuery = [[sqlWrap insertInto:personTable keysAndValues:jennyInfo]execute];

[jennyInsertQuery checkError:@"jennyInsertQuery error"];

NSLog(@"print all %@",[[sqlWrap select:NULL from:personTable]results]);

更新

NSNumber *jennyID = jennyInsertQuery.insertID;

Query *updateQuery = [[[sqlWrap update:personTable keysAndValues:@{ageColumn: @(25)}] where:idColumn is:equal_to value_s:jennyID]execute];
[updateQuery checkError:@"jenny age update error"];

选择

Query *namesQuery = [[sqlWrap select:nameColumn from:personTable]execute];
if (![namesQuery checkError:@"name query"]) {
    for (NSDictionary *result in namesQuery.results) {
        NSLog(@"%@",result[nameColumn]);
    }
}

Query *over30Query = [[[sqlWrap select:@[nameColumn,ageColumn] from:personTable]where:ageColumn is:greater_than value_s:@(30)]execute];

for (NSDictionary *result in over30Query.results) {
    NSLog(@"%@ is %@",result[nameColumn],result[ageColumn]);
}

Query *over30under50Query = [[[[sqlWrap select:@[nameColumn,ageColumn] from:personTable]where:ageColumn is:greater_than value_s:@(30)] where:ageColumn is:less_than value_s:@(50)]execute];

for (NSDictionary *result in over30under50Query.results) {
    NSLog(@"%@ is %@",result[nameColumn],result[ageColumn]);
}

删除

[[[sqlWrap deleteFrom:personTable]where:nameColumn is:like_string value_s:@"%kus"]execute]; 
[[[sqlWrap deleteFrom:personTable]where:nameColumn is:equal_to value_s:@[@"Barney",@"Jenny"]]execute];

NSLog(@"all %@",[[sqlWrap select:NULL from:personTable]results]);

安装

通过 CocoaPods 可以使用 SQLiteWrapper。要安装它,只需将以下行添加到您的 Podfile 中

pod "SQLiteWrapper"

作者

dave234,[email protected]

许可证

SQLiteWrapper可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。