GXDatabaseUtils
April 3, 2015 · View on GitHub
- simplify sqlite database CRUD operation.
- Support ARC.
- Support ios8 and before.

How To Get Started
- Copy file under src and catagory directory to your project
- Download fmdb relevant file
- Add libsqlite3.dylib to project
Support data types
- BOOL
- unsigned int
- NSInteger
- long long
- CGFloat
- double
- NSString
- BOOL for ios8
- Enum for ios8
Support iOS version
iOS5 later
Relationship class Member and column name
RULE: column name is member name of class.
For example:
// class
@interface GXBaseMessage : NSObject {
NSString *address;
}
@property (nonatomic, assign) NSInteger count;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSMutableArray *datas;
@end
| member name | column name |
|---|---|
| address | address |
| count | _count |
| name | _name |
| datas | - |
Dependencies
- fmdb needed
- NSObject subclass
Architecture
<catagory>
NSObject+serializable
<src>
GXDatabaseManagerGXSQLStatementManagerGXCache
Usage
CRUD operation
C-CreateR-RetrieveU-UpdateD-Delete
Create
NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"testDB.sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
res = [GXDatabaseManager createTable:@"t_message" withClass:[GXMessage class] withPrimaryKey:@"_msgId"];
Retrieve
NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
if (!res) {
NSLog(@"ERROR...");
}
NSString *w1 = kWhereString(@"_sessionUserid", @"=");
NSString *w2 = kWhereString(@"_msgId", @"=");
NSString *w = kWhereCombination(w1, @"AND", w2);
[GXDatabaseManager selectObjects:[GXMessageDBEntity class]
fromTable:@"t_message_chat"
where:w
withParams:@[@"1525851662", @"615734ef-2db1-427a-9505-b49ec6a8628c"]
orderBy:@"_msgTime"
withSortType:@"DESC"
withRange:NSMakeRange(0, 5)];
Update
// replace into
NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"testDB.sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
// create table
res = [GXDatabaseManager createTable:@"t_message" withClass:[GXMessage class] withPrimaryKey:@"_msgId"];
[GXDatabaseManager replaceInto:@"t_message" withObject:msg];
// update
NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"testDB.sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
if (!res) NSLog(@"ERROR");
NSString *w = kWhereString(@"_msgId", @"=");
[GXDatabaseManager updateTable:@"t_message"
set:@[@"_fontName"]
where:w
withParams:@[@"黑体", @"1ccaf308-8bb0-1e44-2f0b-98f308d03d57"]];
Delete
NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"];
BOOL res = [GXDatabaseManager databaseWithPath:dbPath];
if (!res) NSLog(@"ERROR...");
[GXDatabaseManager deleteTable:@"t_message_chat" where:@"_msgId=?" withParams:@[@"1ccaf308-8bb0-1e44-2f0b-98f308d03d57"]];
License
GXDatabaseUtils is available under the MIT license. See the LICENSE file for more info.